0

SQL 2008 R2サーバーがあります。 私はOKに見えたウィザードを使って出版物を作成しました。 'システムデータベース'セクションには、多く含まれていない「ディストリビューション」データベースがあります。 (これが既に存在していたかどうか、または「パブリケーションウィザード」によって作成されたかどうかはわかりません) Web同期をセットアップして、IIS7経由でrelisapi.dllと自己署名入りの証明書にアクセスできます。SQL Server 2008 Web同期によるSQL Express 2005へのレプリケーション

私のASP.NET Webサイト用のセットアッププログラムは、SQL Express 2005をインストールします。 サブスクリプションと初期同期の作成をテストするための小さなサイトを作成しました。 最初の同期がサーバーからすべてのデータを取得すると仮定しているので、私は "初期データベース"を作成しません。

サブスクリプションがSQL 2008サーバーのSQL Express &に作成されるため、次のコードが動作するようです。

' 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() 

をしかし、シンクロがエラーをスローします。サーバー上で

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.

、それは私のサブスクリプションを示している「レプリケーションモニタ」を使用して「ユニット化」として。

私のサブスクリプションの1つの問題は、ホステル名が間違っていると思います。 MSDNのMicrosoftの例は

"adventure-works\garrett1" 

を言うが、サーバー、インスタンスまたはデータベースであるとgarrett1(ログインまたは他の何か)誰が冒険-作品かどうかは明らかではありません。では、実際にはどうすればいいのですか?

私はレプリケーションについて何も知らないので、MSDNといくつかの書籍に従っていますので、次にどこへ行くのかについていくつかの点をお伝えしたいと思います。

申し訳ありませんが、これは長すぎます!

答えて

0

私が問題を抱えていた理由は2つありました。

は、まず私の開発用PC上で、マシンはいくつかの点で、名前を変更されていたので、私の地元の加入​​者SQLへの接続が間違っていました。

第二に、IIS7の「自己署名証明書は、」外の世界からHTTPS経由で見ることができる本当の名前を内部名に解決していませんでした。正しいドメインのテスト証明書があり、正常に機能しました。

1

the documentationに基づいて、Subscription.Hostnameの設定は、出版物を動作させるために重要ではありません。マージパブリケーションが分割されたときに、サブスクライバーが提供する値はHOST_NAMEです。フィルタリングされたパブリケーションの詳細については、hereを参照してください。あなたがウェブの同期をサポートするためにcorrectly configured your environmentを持っていることを確信している場合は

、一度にこの一枚をデバッグする必要があるとしています。

それは予想通り、パブリケーションが動作していることを証明するために、パブリッシャ上の別のデータベースのための非Webベースのサブスクリプションを設定することにより開始する価値があるかもしれません。それがうまくいくとすれば、SQL 2005 Expressインスタンスで非Webサブスクリプションを設定してから、Web同期のテストに移ります。

0

興味があれば、HOST_NAME()に関するいくつかの情報をご紹介します。

http://msdn.microsoft.com/en-us/library/ms152478%28v=SQL.110%29.aspx

は、基本的には、(サーバーでHOST_NAME関数をオーバーロード)お好みの値に出版社に変数を渡すためにそれを使用します。これにより、Employee.ID = CONVERT(HOST_NAME()をintとして)などの行をフィルタリングして、サブスクリプションで必要な行のみを取得することができます。

関連する問題