Translate

2012年2月27日月曜日

トランザクションレプリケーションの更新可能なサブスクリプション

 SQLServer2005のトランザクションレプリケーションで2拠点間のデータベースを同期するために、作業の中で問題になったところとその解決方法についてまとめておきます。

■構成

 SQLServer2005 Standardをパブリッシャ、SQLServer2005 Expressをサブスクライバとして、「トランザクションレプリケーションの更新可能なサブスクリプション」を組むこと。

■注意点

 以上のような構成を「SQL Server Management Studio」のウィザードで組むためには、次のような注意点があげられる。
  • Distributed Transaction Coordinatorサービスを自動起動するように設定する
  • SQLサーバの認証を「SQL Server認証モードとWindows認証モード」にしておく
  • サブスクライバから接続するためのアカウント情報を、予めパブリッシャに登録しておく

■Distributed Transaction Coordinatorサービス

 サブスクライバからパブリッシャへ更新をトランザクションするには、サービスの「Distributor Transaction Coordinator」サービスを使用するので、次の設定をしてサービスを起動するように設定するようにする必要があります。
  1. パブリッシャとサブスクライバの双方でDistributed Transaction Coordinator(msdtc.exe)サービスを自動実行させる
  2. コントロールパネルの「管理ツール → コンポーネント サービス」を開き、コンソール ルートの「コンポーネント サービス → コンピュータ → マイ コンピュータ」のプロパティをから、msdtc.exeのセキュリティの構成を変更する
  • 「ネットワークDTCアクセス」にチェックを入れる
  • トランザクションマネージャ通信の「受信と送信を許可する」にチェックを入れる
  • 「認証を必要としない」を選択する
MSDTC「セキュリティの構成」

■SQLServerの認証方法

 サーバ認証の方法を、「SQL Server認証モードとWindows認証モード」に変更する。
サーバのプロパティ

■サブスクライブ用のアカウントを作成する

 パブリッシャ側のセキュリティに、予めサブスクライバ側からトランザクションする際に使用するアカウントを追加する。基本的にはレプリケーションを行うデータベースへの読込と書込の権限があれば十分です。
 このアカウントは、サブスクライバの一般ユーザーアカウントをパブリッシャのデータベースに接続するために、リンクサーバのプロパティで使用します。
  1. パブリッシャの「セキュリティ → ログイン」にユーザーアカウントを作成
  2. 認証方法は「SQLServer認証」にして、ログイン名とパスワードは任意
  3. ユーザーマッピングでレプリケートするデータベースにチェックを入れ、"db_datareader"と"db_datawriter"にチェックを入れる
  • この際アカウントの認証方法はSQL Server認証にする必要があります

■パプリケーションとサブスクライバを設定する

 主な設定方法に関しては、Microsoftのサイトなどにも解説されているのでそちらを参考にする。
トランザクション パブリケーションの更新サブスクリプションを有効にする方法 (SQL Server Management Studio)
トランザクション パブリケーションに対して更新可能なサブスクリプションを作成する方法 (SQL Server Management Studio)
  • 更新可能なサブスクリプション用のログイン」ページで、”サブスクライブ用のアカウントを作成する”で作成したアカウントとパスワードを入力する。
  • ExpressにはAgentが無いため、ディストリビュータはパブリッシャ側に置く

■パプリケーションにユーザーを追加する

 最後にパプリケーションのプロパティを開き「パプリケーション アクセス リスト」のページで、実際にサブスクライバ側のサーバに接続してデータを更新するユーザーのアカウントを追加します。

0 件のコメント :

コメントを投稿