SQL2008R2サーバーがあります。うまくいったように見えるウィザードを使用してパブリケーションを作成しました。「システムデータベース」セクションに「ディストリビューション」データベースがありますが、多くはありません。(これがすでに存在するかどうか、または「パブリケーションウィザード」によって作成されたかどうかはわかりません。)Web同期をセットアップし、IIS7および自己署名証明書を介してrelisapi.dllにアクセスできます。
ASP.NET Webサイトのセットアッププログラムは、SQL Express2005をインストールします。サブスクリプションの作成と初期同期をテストするための小さなサイトを作成しました。最初の同期でサーバーからすべてがプルダウンされると想定しているため、「初期」データベースを作成しません。
サブスクリプションはSQLExpressとSQL2008サーバーで作成されるため、次のコードは機能しているようです。
' 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()
しかし、syncronizeはエラーをスローします:
パブリケーション「マイパブリケーション」のサブスクリプションを確認できませんでした。すべてのMergeAgentコマンドラインパラメーターが正しく指定されていること、およびサブスクリプションが正しく構成されていることを確認してください。パブリッシャーがこのサブスクリプションに関する情報を持っていない場合は、サブスクリプションを削除して再作成します。
サーバー上で、「Replication Monitor」を使用すると、サブスクリプションが「Unitialized」として表示されます。
1つの問題は、subscription.HostNameが間違っていることだと思います。MSDNのMicrosoftの例によると
"adventure-works\garrett1"
しかし、adventure-worksがサーバー、インスタンス、データベースのいずれであり、garrett1(ログインなど)が誰であるかは明確ではありません。では、これは実際にはどうあるべきでしょうか?
私はレプリケーションについて何も知らず、MSDNといくつかの本をフォローしているだけなので、次に進むべき場所についていくつかの指針を高く評価したいと思います。
すみません、これはとても長いです!