大規模なデータベース(200GB)のトランザクションレプリケーションを確立したい。しかし、パブリッシャーを作成してスナップショットエージェントを起動すると、非常に時間がかかり、次のメッセージが表示されます
プロセスは実行中であり、サーバーからの応答を待っています
問題は、スナップショットフォルダーのサイズを確認すると、大きくなっていることがわかります。しかし、遅すぎます。
これについて何か考えはありますか?またはレプリケーションを行う別の方法?より詳細な警告またはエラーメッセージを見つけるにはどうすればよいですか?
追伸私のデータベースには、データベースのサイズの98%を占める画像用の2つのテーブルがあります。私がそれらを私の出版物に含めない場合、すべてがうまくいきます。しかし、それらを含めると、問題に直面します。
はい、スナップショットを介して大規模なデータベースを初期化すると、非常に時間がかかり、時間がかかる可能性があります。ケースに適している場合は、まずデータベースのコピーをターゲットマシンに復元する必要があります。
サブスクリプションの設定で、[バックアップファイルからの初期化を許可]を選択します。
レプリケーションを設定するためのユーザーインターフェイスには制限があるため、UIツールに依存するのではなく、スクリプトを作成する必要があります。これに関するブログ投稿があります:
Msdnからの投稿には、コードサンプルが含まれています。
exec sp_addsubscription @publication = N'Repl2000', …..
@sync_type = N'initialize with backup', @backupdevicetype='Disk',
@backupdevicename='C:\Repl2000_RestoreThis.bak'--the last backup used to restore on the subscriber
go
exec sp_addpushsubscription_agent …….
go
この記事には、トラブルシューティングのヒントも含まれています。
追伸私のデータベースには、データベースのサイズの98%を占める画像用の2つのテーブルがあります。私がそれらを私の出版物に含めない場合、すべてがうまくいきます。しかし、それらを含めると、問題に直面します。
これらの2つのテーブルについては別のパブリケーションを作成し、残りのテーブルは別のパブリケーションで作成することをお勧めします。このようにして、これら2つのテーブルに問題が発生した場合でも、データセット全体に影響はありません。
レプリケーションを行う別の方法?
@RLFがバックアップからレプリケーションを初期化すると述べたように。以下のような別のアプローチがあります。
Kendal Van Dykeが2番目のアプローチについてブログで Reduce Transactional Replication Synchronization Time by Applying Snapshots手動で which優れており、時間と命の節約になります。少し手作業のプロセスですが、私はそれとwin-winのアプローチを扱いました。
より詳細な警告またはエラーメッセージを見つけるにはどうすればよいですか?
詳細ログを有効にするには、より詳細なログを確認するレプリケーションエージェントジョブのRun Agentステップに2つのパラメーター値を追加する必要があります。
-OutputVerboseLevel [0|1|2]
-Output [Full Output Path and File Name]
OutputVerboseLevelパラメーターは、3つの整数値(0、1、または2)のいずれかを受け入れます。