У меня есть сервер SQL 2008 R2.
Я создал публикацию с помощью мастера, которая вроде бы прошла нормально.
В разделе «системные базы данных» есть база данных «дистрибуция», в которой не так много информации. (Не уверен, что это уже было или «Мастер публикаций» его создал.)
Я настроил веб-синхронизацию и имею доступ к relisapi.dll через IIS7 и самозаверяющий сертификат.
Моя программа установки для моего веб-сайта ASP.NET устанавливает SQL Express 2005.
Я написал небольшой сайт для проверки создания подписки и начальной синхронизации.
Я не "создаю исходную" базу данных, так как я предполагаю, что первая синхронизация будет сбрасывать все с сервера.
Кажется, что работает следующий фрагмент кода, потому что подписка создается в SQL Express и на сервере 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()
Затем я запускаю этот бит кода:
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()
но синхронизация выдает ошибку:
Не удалось подтвердить подписку на публикацию «Моя публикация». Убедитесь, что все параметры командной строки агента слияния заданы правильно и что подписка настроена правильно. Если у издателя больше нет информации об этой подписке, удалите и заново создайте подписку.
На сервере с помощью «Монитора репликации» моя подписка отображается как «Унифицированная».
Я думаю, что одна проблема заключается в том, что моя подписка неверна. Примеры Microsoft на MSDN говорят
"adventure-works\garrett1"
но неясно, является ли adventure-works сервером, экземпляром или базой данных и кто такой garrett1 (логин или что-то еще). Так что же это на самом деле должно быть?
Поскольку я ничего не знаю о репликации, и я просто слежу за MSDN и некоторыми книгами, я бы оценил некоторые указания относительно того, куда идти дальше.
Извините, что так долго!