dポイントプレゼントキャンペーン実施中!

お世話になっております。
現在、SQLServer2005、VB6.0(SP5)を使って開発をしています。
最終的には、レプリケーションの設定/解除を行うツールを作りたいのですが、まずSQLの機能を使って、ツール作成よりも簡単にレプリの設定/解除が出来るのではないかと調査中です。

msdnのヘルプに、次の様な記述がありました。
「レプリケーション スクリプトは、以下のような方法で作成できます。
 ・レプリケーション ウィザードのスクリプト生成機能を使用する。」
(http://msdn2.microsoft.com/ja-jp/library/ms14730 …
しかし、この機能を使って作成したスクリプトを使っているのですが、データの同期が行えていません。
ログ リーダー エージェントを見ると、
「1 個のトランザクションが 1 個のコマンドと共に配信されました。」
と表示されているのですが、実際にデータを確認すると、同期が取れていません。

サブスクリプションの状態をチェックすると、
「ディストリビュータからサブスクライバまでの履歴」
で、「パブリケーション○○の初期スナップショットはまだ使用できません。」
と言うエラーが表示されていました。

レプリケーションモニタをチェックしたところ、スナップショットエージェントが開始されていませんでした。

そこで、スナップショットエージェントを開始したら、データの同期が行えるようになったのですが、
「レプリケーション ウィザードのスクリプト生成機能」を使用して作成したスクリプトなのに、完全なレプリケーションの設定が出来ないのは、どうしてなのでしょうか?

何か御存知の方がいらっしゃいましたら、教えてください。
よろしくお願いします。

A 回答 (1件)

SQLDMOでサブスクリプションの登録処理を作成した時に、同様のことで悩んだので、もしかしたら、原因が同じかもしれません。


このときの原因は、サブスクリプションエージェントのfrequency_typeプロパティを未指定にしていた為、データの同期は実行されませんでした。
もし原因が同じであれば、以下のようにすれば、うまくいくと思います。

>(http://msdn2.microsoft.com/ja-jp/library/ms14730 … )

ここの「バッチ ファイルを使用したタスクの自動化」にスクリプトの以下のような箇所があります。

>REM -- Add a pull subscription at the Subscriber
>sqlcmd /S%Subscriber% /E /Q"USE %SubDb% EXEC sp_addmergepullsubscription (後略)
>sqlcmd /S%Subscriber% /E /Q"USE %SubDb% EXEC sp_addmergepullsubscription_agent (後略)

この最後の「sp_addmergepullsubscription_agent」プロシージャーの「@frequency_type」オプションに64(自動起動)を設定しみてください。

参考URL:http://msdn2.microsoft.com/ja-jp/library/ms18772 …
    • good
    • 0
この回答へのお礼

ありがとうございます!!!

「@frequency_type」オプションに64を設定したら、自動的に初期化が実行されるようになりました。
こういう細かいオプションまできちんとチェックしないといけなかったんですね。

とても助かりました。
どうもありがとうございました。

お礼日時:2006/10/03 12:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!