すべての種類のレプリケーションに共通する注意点
ここでは、ID 列、制約、データ型など、レプリケーションを実装する前に考慮しなければならない点について説明します。このトピックでは、すべての種類のレプリケーションに共通する注意点について説明します。その他の情報については以下のトピックで扱います。
これらのトピック以外に、各レプリケーション機能のトピックで、それぞれの機能を実装する場合の注意点について説明しています。
SQL Server エージェント
レプリケーションでは、エージェントと呼ばれるスタンドアロンのプログラムを使用して、変更の追跡とデータの配布に関連するタスクを実行します。既定では、レプリケーション エージェントは SQL Server エージェントでスケジュールされたジョブとして実行されます。これらのジョブを実行するには、SQL Server エージェントが実行中であることが必要です。SQL Server のインストール時に、サービスがインストール中に自動開始されるように明示的に選択しない限り、SQL Server エージェント サービスは既定で無効になります。SQL Server エージェント サービスの起動の詳細については、「SQL Server エージェントの起動」を参照してください。
セキュリティに関する注意点
アプリケーションのデータやビジネス ロジックを保護するために、レプリケーション環境をセキュリティで保護する方法を理解しておくことは重要です。レプリケーション環境をセキュリティで保護するには、基本的には、認証と承認のオプション、レプリケーション フィルタ機能の適切な使用方法、およびレプリケーション環境の各要素 (ディストリビュータ、パブリッシャ、サブスクライバ、スナップショット フォルダなど) をセキュリティで保護するための個々の手法を把握する必要があります。詳細については、「セキュリティと保護 (レプリケーション)」を参照してください。
管理上の注意点
レプリケーションを構成したら、レプリケーション トポロジの管理方法について理解することが重要です。レプリケーション管理における推奨事項については、「レプリケーション管理の推奨事項」を参照してください。このトピックでは、さまざまな分野における推奨事項について説明し、また各分野の詳細情報へのリンクも提供します。このトピックで説明する推奨事項に従うだけでなく、よく寄せられる質問のトピック「レプリケーションの管理者に関してよく寄せられる質問」に目を通し、レプリケーション管理についての一般的な疑問と問題点について理解することをお勧めします。
ネットワークおよびパフォーマンスに関する注意点
パフォーマンスに関しては、以下の項目について、さまざまな推奨事項があります。
サーバーおよびネットワークのハードウェア
データベースの設計
ディストリビュータの構成
パブリケーションの設計およびオプション
フィルタの設計および使用方法
サブスクリプション オプション
スナップショット オプション
エージェント パラメータ
メンテナンス
詳細については、「パフォーマンス (レプリケーション)」を参照してください。
低速なネットワーク上でレプリケーションを実行している場合、レプリケーションに関係するエージェントのプロファイルをカスタマイズできます。構成オプションは、プロファイル構成対象のエージェントによって異なります。詳細については、「レプリケーション エージェント プロファイル」および「低速ネットワークが引き起こす問題」を参照してください。
初期スナップショットを適用する場合には、ネットワーク速度が最も重要な問題となることがよくあります。増分変更のデータ量は少なくても、最初に配信されるデータ量は多い場合があります。このような場合、以下の解決策が考えられます。
CD-ROM またはテープ デバイスを使用してスナップショットを転送する。詳細については、「スナップショット フォルダの代替位置」および「圧縮スナップショット」を参照してください。
スナップショットを使用せずにサブスクリプションを初期化する。詳細については、「スナップショットを使用しないトランザクション サブスクリプションの初期化」および「スナップショットを使用しないマージ サブスクリプションの初期化」を参照してください。
レプリケーション トポロジにおけるサーバー名の指定
レプリケーションに参加するサーバー インスタンスの名前を指定する場合、SQL Server に登録済みのサーバー インスタンス名の形式に従う必要があります。たとえば、レプリケーションのストアド プロシージャやレプリケーション エージェントの接続設定に対して、パブリッシャまたはサブスクライバのパラメータをコマンド ライン上で指定する場合、SQL Server のインスタンス名を使用する必要があります。SQL Server インスタンスのネットワーク名が登録済みのインスタンス名と異なる場合、エージェントのレプリケーション接続は失敗します。インスタンスのネットワーク名と SQL Server のインスタンス名が異なる場合は、SQL Server のインスタンス名を有効なネットワーク名として追加することを検討してください。代替ネットワーク名を設定する 1 つの方法は、その名前をローカル ホスト ファイルに追加することです。ローカル ホスト ファイルは、既定では、WINDOWS\system32\drivers\etc または WINNT\system32\drivers\etc にあります。詳細については、Windows のマニュアルを参照してください。
たとえば、コンピュータ名が comp1、そのコンピュータの IP アドレスが 10.193.17.129、インスタンス名が inst1/instname の場合、ホスト ファイルに次のエントリを追加します。
10.193.17.129 inst1
データの整合性
サブスクライバでの更新が可能なトポロジの場合、各サブスクライバでアプリケーションの整合性を保持する必要があります。制約など、パブリッシャでデータ変更の検証に使用されるすべてのコントロールは、サブスクライバに存在するか、またはアプリケーションで処理される必要があります。サブスクライバのレプリケーション エージェントと制約の詳細については、「NOT FOR REPLICATION を使用した制約、ID、およびトリガの制御」を参照してください。
データの競合
サブスクライバでの更新が可能なトポロジの場合は、競合ができるだけ発生しないようにアプリケーションを設計します。サブスクライバがデータの読み取りを要求しても、データの更新を要求しない場合、競合は発生しません。地理的な位置やビジネス上の利用目的に従ってデータを論理的にパーティション分割すると、ユーザーによって同一のデータが更新されることがなくなるため、競合の発生を回避できます。データのパーティション分割の詳細については、「パブリッシュされたデータのフィルタ選択」を参照してください。
Large Object (LOB) データ型
text、ntext、および image の各データ型は非推奨です。varchar(max)、nvarchar(max)、および varbinary(max) の各データ型を使用することをお勧めします。text、ntext、および image の各データ型を使用する場合の詳細については、「トランザクション レプリケーションに関する注意点」および「マージ レプリケーションに関する注意点」の「Large Object (LOB) データ型」を参照してください。
SQL Server 以外のパブリッシャ、SQL Server 以外のサブスクライバ、および MicrosoftSQL Server Compact 3.5 SP1 を実行するサブスクライバでは、キャラクタ モードのスナップショットが使用されます。キャラクタ モードのスナップショットを使用する場合、LOB 型は Unicode に変換されます。これにより、パブリケーション データベースで同じデータを使用する場合に比べて、スナップショット ファイルの LOB データが 4 倍のサイズになります。このデータをサブスクリプション データベースにコピーすると再度変換が行われ、結果としてパブリケーション データベースのデータ サイズと同じになります。
データ型のマッピング
以前のバージョンの SQL Server、SQL Server Compact 3.5 SP1、SQL Server 以外のパブリッシャ、または SQL Server 以外のサブスクライバがレプリケーション トポロジに含まれる場合、データベース間でデータ型のマッピングが行われます。データ型のマッピングの一覧については、以下のトピックを参照してください。
Data Types and Replication (SQL Server Compact 3.5 SP1)
ID 列
複数のノードで更新されるレプリケーション トポロジで ID 列を使用するには、レプリケーション トポロジ内の各ノードで異なる範囲の ID 値を使用して、重複が生じないようにする必要があります。レプリケーションではすべての種類のパブリケーションおよびサブスクリプションの ID 列が処理され、列は手動で管理することも、レプリケーションで自動で管理することもできます。詳細については、「ID 列のレプリケート」を参照してください。
計算列
レプリケーションでは、計算列の定義のみがサブスクライバにコピーされます。サブスクライバの各行の値は、サブスクライバのデータと、列の計算に非決定的関数が使用されるかどうかによって異なります。パブリッシャおよびサブスクライバのデータが指定した時点で同一であり、また計算に決定的関数のみが使用される場合、行の計算値は同一になります。データが異なる場合、または計算に 1 つ以上の非決定的関数が使用される場合は、パブリッシャとサブスクライバで値が異なることがあります。関数の決定性の詳細については、「決定的関数と非決定的関数」を参照してください。