J'ai un serveur SQL 2008 R2. J'ai créé une publication en utilisant l'assistant qui semblait aller bien. Il existe une base de données 'distribution' dans la section 'bases de données système' qui contient peu de choses. (Je ne sais pas si cela existait déjà ou si le "Assistant Publication" l'a créé.) J'ai configuré la synchronisation Web et j'ai accès à relisapi.dll via IIS7 et un certificat auto-signé.Réplication SQL Server 2008 vers SQL Express 2005 via la synchronisation Web
Mon programme d'installation pour mon site Web ASP.NET installe SQL Express 2005. J'ai écrit un petit site pour tester la création d'un abonnement et la synchronisation initiale. Je ne crée pas une base de données initiale car je suppose que la première synchronisation va tout retirer du serveur. Le bit de code suivant semble fonctionner parce qu'un abonnement est créé dans SQL Express & dans le serveur SQL 2008.
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = subscriberConn
subscription.PublisherName = publisherName
subscription.PublicationName = publicationName
subscription.PublicationDBName = publicationDbName
subscription.DatabaseName = subscriptionDbName
subscription.HostName = hostname
subscription.CreateSyncAgentByDefault = True
' Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' Enable Web synchronization.
subscription.UseWebSynchronization = True
subscription.InternetUrl = webSyncUrl
' Specify the same Windows credentials to use when connecting to the
' Web server using HTTPS Basic Authentication.
subscription.InternetSecurityMode = AuthenticationMethod.BasicAuthentication
subscription.InternetLogin = winLogin
subscription.InternetPassword = winPassword
If Not subscription.LoadProperties() Then
' Create the pull subscription at the Subscriber.
subscription.Create()
Je lance ce morceau de code:
If Not subscription.PublisherSecurity Is Nothing Or _
subscription.DistributorSecurity Is Nothing Then
'0: Only error messages are logged.
'1: All progress report messages are logged.
'2: All progress report messages and error messages are logged.
subscription.SynchronizationAgent.OutputVerboseLevel = 2
subscription.SynchronizationAgent.Output = "c:\createmerge.txt"
' Synchronously start the Merge Agent for the subscription.
subscription.SynchronizationAgent.Synchronize()
mais le syncronize jette l'erreur:
The subscription to publication 'My publication' could not be verified. Ensure that all Merge Agent command line parameters are specified correctly and that the subscription is correctly configured. If the Publisher no longer has information about this subscription, drop and recreate the subscription.
Sur le serveur, en utilisant "Moniteur de réplication", il montre mon abonnement comme "Unitialisé".
Je pense qu'un problème est que mon abonnement.HostName est faux. Les exemples Microsoft sur MSDN disent
"adventure-works\garrett1"
mais on ne sait pas si l'aventure est usine le serveur, instance ou base de données et qui est Garrett1 (une connexion ou autre chose). Alors, que devrait-il être réellement? Comme je ne connais rien à la réplication et que je viens juste de suivre MSDN et quelques livres, j'apprécierais quelques pointeurs sur la prochaine étape.
Désolé c'est trop long!