- - PR -
SQL SERVER 2005 レプリケーションを.NETにて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-13 17:28
レプリケーションを組み、プログラム(Visual Basic.NET)から、レプリケーションを動かしたいと考えています。
・SQL SERVER 認証を使用して接続する ・マージ パブリケーションを選択する ・サブスクリプションのサーバは、SQL SERVER 2005 EXPRESSである といったことが条件です。 そこで、SQL SERVER Management Studioにて、レプリケーションの作成する際、セキュリティ設定を以下のように行いました。 ●パブリケーションの設定 ・スナップショットエージェントのセキュリティ →SQL SERVER エージェントサービスのアカウントで実行する ・パブリッシャへの接続 →「次のSQL SERVER ログインを使用する」を選択し、ログイン名等を入力する ●サブスクリプションの設定 ・サブスクリプションを同期するときに、ディストリビューションエージェントの実行で必要となるドメイン、アカウント →SQL SERVER エージェントサービスのアカウントで実行する ・ディストリビュータに接続 →プロセスのアカウントを借用する ・サブスクライバに接続 →「次のSQL SERVER ログインを使用する」を選択し、ログイン名等を入力する 尚、SQL SERVER Management Studioから「同期」をとると正常に動きます。 プログラムは、以下のサイトより、 「マージ パブリケーションへのプッシュ サブスクリプションを同期します。エージェントはエージェント ジョブを使用して非同期的に起動されます。」 の箇所を参考にしています。 動かしたところ、 >If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then の箇所で、 「A subscription to 'AdvWorksSalesOrdersMerge' does not exists on SERVER_S\EXPRESS」 というエラーが出てしまいます。 以下がそのソースなのですが、どなたかヒントだけでも、ご教授願えないでしょうか?? subscriptionの箇所にも、SQL SERVER 接続の記述が必要なのかなとは思いますが、 その場合の記述を教えていただけないでしょうか?? よくわからないまま、以下の記述は試しましたが、解決しませんでした。 subscription.SubscriberSecurity.WindowsAuthentication = False subscription.SubscriberSecurity.SqlStandardLogin = "aaa" subscription.SubscriberSecurity.SqlStandardPassword = "bbb" subscription.PublisherSecurity.WindowsAuthentication = False subscription.PublisherSecurity.SqlStandardLogin = "aaa" subscription.PublisherSecurity.SqlStandardPassword = "bbb" =========================================================== 問題のプログラム ' Define the server, publication, and database names. Dim subscriberName As String = "SERVER_S\EXPRESS" Dim publisherName As String = "SERVER_P" Dim publicationName As String = "AdvWorksSalesOrdersMerge" Dim subscriptionDbName As String = "AdventureWorksReplica" Dim publicationDbName As String = "AdventureWorks" ' Create a connection to the Publisher. Dim conn As ServerConnection = New ServerConnection(publisherName) conn.LoginSecure = False conn.Login = "aaa" conn.Password = "bbb" Dim subscription As MergeSubscription ' Connect to the Publisher. conn.Connect() ' Define push subscription. subscription = New MergeSubscription() subscription.ConnectionContext = conn subscription.DatabaseName = publicationDbName subscription.PublicationName = publicationName subscription.SubscriptionDBName = subscriptionDbName subscription.SubscriberName = subscriberName ' If the push subscription and the job exists, start the agent job. If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then ' Start the Merge Agent asynchronously. subscription.SynchronizeWithJob() Else ' Do something here if the subscription does not exist. Throw New ApplicationException(String.Format( _ "A subscription to '{0}' does not exists on {1}", _ publicationName, subscriberName)) End If conn.Disconnect() |
|
投稿日時: 2007-09-13 17:32
すみません、参考サイトを書き損じました。こちらです。
http://msdn2.microsoft.com/ja-jp/library/ms146910.aspx |
|
投稿日時: 2007-09-13 18:26
すみません、上記の分は、自己解決しました。
ただ、別のエラーが発生しました。 >subscription.SynchronizeWithJob() の箇所で 「Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。」 というものです。 |
1