none
SQLServer2005 トランザクションレプリケーションについて RRS feed

  • 質問

  •  

    SQLServer 2005 のトランザクションレプリケーションについて質問があるのですが、

    現在、2つのDBサーバ間(ここではA Bとする)でテストを行っております。

     

    Aはパブリッシャー・デストリビューター

    Bはサブスクライバー

    として設定を行っており、

    Aのみにテーブル追加や変更等を行い、

    Bに反映させたいのです。

     

    ここでお聞きしたいのは、

    トランザクションレプリケーションは

    テーブルが追加された場合も反映できるのでしょうか。

    (テストではうまくいきませんでした。)

     

    テーブルが新規追加された場合は

    スナップショットレプリケーションでなくてはならないのでしょうか。

     

    まだ知識が浅いため

    検討はずれな質問でしたら申し訳ありません。

     

    ご教示宜しくお願いいたします。

    2007年12月19日 4:57

回答

  • テーブルが新たに追加された場合にはどのレプリケーションでも自動的にそのテーブルをサブスクライバにコピーさせることはできません。普通であればパブリッシャを作り直してスナップショット レプリケーションによる初期化後に任意のレプリケーションを実行します。(普通でない方法は要件によるので一概に言えませんが簡単な方法ではありません。自分でその機能を作りこむことになるでしょう)

     

    なぜなら、オブジェクト(テーブル、ストアド プロシージャなど)毎にパブリッシュするかしないかが決められているからです。つまり新しくテーブルを追加しても、そのテーブルはパブリッシュされていないので、サブスクライバにコピーされることはありません。

    2007年12月19日 6:00

すべての返信

  • テーブルが新たに追加された場合にはどのレプリケーションでも自動的にそのテーブルをサブスクライバにコピーさせることはできません。普通であればパブリッシャを作り直してスナップショット レプリケーションによる初期化後に任意のレプリケーションを実行します。(普通でない方法は要件によるので一概に言えませんが簡単な方法ではありません。自分でその機能を作りこむことになるでしょう)

     

    なぜなら、オブジェクト(テーブル、ストアド プロシージャなど)毎にパブリッシュするかしないかが決められているからです。つまり新しくテーブルを追加しても、そのテーブルはパブリッシュされていないので、サブスクライバにコピーされることはありません。

    2007年12月19日 6:00
  • 有難うございます。

    ずっと悩んでいたことですので、大変助かりました。

     

    結局、レプリケーションでは新規テーブルは反映できないんですね。

     

    上記のような反映を行う方法がもしありましたら

    アドバイスをいただけると大変助かります。

     

     

     

     

     

    2007年12月19日 8:16
  •  yusuke641 さんからの引用

    上記のような反映を行う方法がもしありましたら

    アドバイスをいただけると大変助かります。

    SQL Server/レプリケーションの機能では、それを行う方法はありません。ひとつのアイデアとしては、DDL トリガを使ってデータベースに対して CREATE ステートメントが実行されたらパブリケーションを修正し、サブスクライバにスナップショットを push する、などが思いつきますが、そのようなことをやっている人は聞いたことがありませんし、自分で作りこむにしても結構な手間がかかると思います。

    2007年12月20日 3:23