web-dev-qa-db-ja.com

テーブルをロックせずにレプリケーションスナップショットを生成する方法

サブスクリプションを再初期化して新しいスナップショットを生成すると、すべてのテーブルがロックされ、データベースが非常に長い間使用できなくなります(待たされることはありません)。

とにかくロックせずにこれを行う方法はありますか?

3
Kenny Johansen

スナップショットの全体のポイントは、レプリケーションに関連するアーティクルの特定の時点のコピーを提供することです。特定の記事のスナップショットが完了するまでテーブルをロックすることにより、パブリッシャーからスナップショットファイルを生成するときにそれを行います。

サーバーのアクティビティ時間が少ないときに再初期化することを計画する必要があります。

とにかくこれをロックせずに行うことはありますか?

SQL Server 2005では、デフォルトで並行スナップショットが使用されます(プッシュサブスクリプションにのみ適用されます)

sync_method = concurrent

すべてのテーブルのネイティブモードの一括コピープログラム出力を生成しますが、は、スナップショット中にテーブルをロックしません

新しいスナップショットにスキーマの変更を含める必要がある場合は除きます。 –ケニー・ヨハンセン、2014年9月16日

また、コメントのとおり、スキーマの変更(たとえば、新しい列の追加)を行っており、それらをサブスクライバーに複製する場合は、 this メソッド。

2
Kin Shah