Replication Snapshot Agent
適用対象: SQL Server
Azure SQL Database
レプリケーション スナップショット エージェントは、パブリッシュされたテーブルおよびデータベース オブジェクトのスキーマとデータを含むスナップショット ファイルを作成し、ファイルをスナップショット フォルダーに保存し、同期ジョブをディストリビューション データベースに記録する実行可能ファイルです。
Note
- パラメーターは任意の順序で指定できます。
Note
Azure SQL Managed Instance は、スナップショットおよびトランザクション レプリケーションのパブリッシャー、ディストリビューター、およびサブスクライバーの可能性があります。 Azure SQL Database のデータベースは、スナップショットとトランザクション レプリケーションのプッシュ サブスクライバーの可能性しかありません。 詳細については、Azure SQL Database および Azure SQL Managed Instance を使用したトランザクションのレプリケーションに関するページを参照してください。
構文
snapshot [ -?]
-Publisher server_name[\instance_name]
-Publication publication_name
[-70Subscribers]
[-BcpBatchSize bcp_batch_size]
[-DefinitionFile def_path_and_file_name]
[-Distributor server_name[\instance_name]]
[-DistributorDeadlockPriority [-1|0|1] ]
[-DistributorLogin distributor_login]
[-DistributorPassword distributor_password]
[-DistributorSecurityMode [0|1] ]
[-DynamicFilterHostName dynamic_filter_host_name]
[-DynamicFilterLogin dynamic_filter_login]
[-DynamicSnapshotLocation dynamic_snapshot_location]
[-EncryptionLevel [0|1|2]]
[-FieldDelimiter field_delimiter]
[-HistoryVerboseLevel [0|1|2|3] ]
[-HRBcpBlocks number_of_blocks ]
[-HRBcpBlockSize block_size ]
[-HRBcpDynamicBlocks ]
[-KeepAliveMessageInterval keep_alive_interval]
[-LoginTimeOut login_time_out_seconds]
[-MaxBcpThreads number_of_threads ]
[-MaxNetworkOptimization [0|1]]
[-Output output_path_and_file_name]
[-OutputVerboseLevel [0|1|2] ]
[-PacketSize packet_size]
[-PrefetchTables [0|1] ]
[-ProfileName profile_name]
[-PublisherDB publisher_database]
[-PublisherDeadlockPriority [-1|0|1] ]
[-PublisherFailoverPartner server_name[\instance_name] ]
[-PublisherLogin publisher_login]
[-PublisherPassword publisher_password]
[-PublisherSecurityMode [0|1] ]
[-QueryTimeOut query_time_out_seconds]
[-ReplicationType [1|2] ]
[-RowDelimiter row_delimiter]
[-StartQueueTimeout start_queue_timeout_seconds]
[-UsePerArticleContentsView use_per_article_contents_view]
引数
-?
使用できるすべてのパラメーターを表示します。
-Publisher server_name[\instance_name]
パブリッシャーの名前です。 サーバー上で、Microsoft SQL Server の既定のインスタンスに接続するには server_name を指定します。 サーバー上で、 SQL Server の名前付きインスタンスに接続するには server_name\instance_name を指定します。
-Publication publication
パブリケーションの名前です。 このパラメーターは、新規または再初期化されたサブスクリプションのスナップショットを常に利用できるようにパブリケーションを設定している場合にのみ有効です。
-70Subscribers
いずれかのサブスクライバーで SQL Server バージョン 7.0 が動作している場合に、必ず使用します。
-BcpBatchSize bcp_ batch_ size
一括コピー操作によって送られる行の数です。 bcp in 操作を実行する場合、バッチ サイズは 1 つのトランザクションとしてサーバーに送る行数です。ディストリビューション エージェントが bcp 実行状況メッセージをログに記録する前に、これらの行数を送る必要があります。 bcp out 操作を実行する場合は、固定バッチ サイズ 1000 が使用されます。 値 0 は、メッセージをログに記録しないことを示します。
-DefinitionFile def_path_and_file_name
エージェント定義ファイルのパスです。 エージェント定義ファイルには、エージェントのコマンド ライン引数が含まれます。 ファイルの内容は実行可能ファイルとして解析されます。 二重引用符 (") を使用して、任意の文字を含む引数値を指定します。
-Distributor server_name[\instance_name]
ディストリビューターの名前です。 サーバー上で、SQL Server の既定のインスタンスに接続するには server_name を指定します。 サーバー上で、 SQL Server の名前付きインスタンスに接続するには server_name\instance_name を指定します。
-DistributorDeadlockPriority [-1|0|1]
デッドロックが発生した場合のディストリビューターへのスナップショット エージェント接続の優先度です。 このパラメーターは、スナップショットの生成中にスナップショット エージェントとユーザー アプリケーション間で発生する可能性のあるデッドロックを解決するために指定します。
DistributorDeadlockPriority の値 | 説明 |
---|---|
-1 | ディストリビューター側でデッドロックが発生した場合、スナップショット エージェント以外のアプリケーションが優先されます。 |
0 (既定値) | 優先度は割り当てられません。 |
1 | ディストリビューター側でデッドロックが発生した場合、スナップショット エージェントが優先されます。 |
-DistributorLogin distributor_login
SQL Server 認証を使用してディストリビューターに接続するときに使用されるログインです。
-DistributorPassword distributor_password
SQL Server 認証を使用してディストリビューターに接続するときに使用されるパスワードです。 .
-DistributorSecurityMode [ 0| 1]
ディストリビューターのセキュリティ モードを指定します。 値 0 は SQL Server の認証モード (既定値) を示し、値 1 は Windows 認証モードを示します。
-DynamicFilterHostName dynamic_filter_host_name
動的スナップショットの作成時に、フィルター選択用の HOST_NAME (Transact-SQL) の値を設定するために使用されます。 たとえば、アーティクルに対してサブセット フィルター句 rep_id = HOST_NAME()
を指定し、 DynamicFilterHostName プロパティを "FBJones" に設定した後でマージ エージェントを呼び出すと、 rep_id 列に "FBJones" が含まれる行だけがレプリケートされます。
-DynamicFilterLogin dynamic_filter_login
動的スナップショットの作成時にフィルター処理で SUSER_SNAME (Transact-SQL) の値を設定するために使用されます。 たとえば、アーティクルに対してサブセット フィルター句 user_id = SUSER_SNAME()
を指定し、 DynamicFilterLogin プロパティを "rsmith" に設定した後で、 SQLSnapshot オブジェクトの Run メソッドを呼び出すと、 user_id 列に "rsmith" を含む行だけがスナップショットに含められます。
-DynamicSnapshotLocation dynamic_snapshot_location
動的スナップショットの生成先の場所です。
-EncryptionLevel [ 0 | 1 | 2 ]
接続確立時にスナップショット エージェントが使用するトランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) の暗号化レベルです。
EncryptionLevel の値 | 説明 |
---|---|
0 | TLS を使用しないことを指定します。 |
1 | TLS を使用しますが、信頼できる発行者によって TLS/SSL サーバー証明書が署名されているかどうかをエージェントでは検証しないことを指定します。 |
2 | TLS を使用し、証明書を検証することを指定します。 |
Note
有効な TLS/SSL 証明書は、SQL Server の完全修飾ドメイン名を使用して定義されます。 -EncryptionLevel を 2 に設定したときにエージェントが正しく接続されるようにするには、ローカルの SQL Server 上に別名を作成します。 'Alias Name' パラメーターはサーバー名にし、'Server' パラメーターは SQL Server の完全修飾名に設定する必要があります。
詳細については、「レプリケーションのセキュリティ設定の表示および変更」を参照してください。
-FieldDelimiter field_delimiter
SQL Server 一括コピーで扱うデータ ファイルのフィールドの末尾を示す 1 文字または文字列です。 既定値は \n<x$3>\n です。
-HistoryVerboseLevel [ 1| 2| 3]
スナップショット操作中にログに記録する履歴の量を指定します。 1を選択すれば、ログへの履歴の記録がパフォーマンスに与える影響を最小限に抑えることができます。
HistoryVerboseLevel の値 | 説明 |
---|---|
0 | 進行状況メッセージがコンソールまたは出力ファイルに書き込まれます。 履歴レコードは、ディストリビューション データベースのログに記録されません。 |
1 | 同じ状態 (startup、progress、success など) を示している以前の履歴メッセージを常に更新します。 前回の記録に同じ状態がない場合は、新しい記録を挿入します。 |
2 (既定値) | アイドル状態や長時間実行を示すメッセージでない場合、新しい履歴レコードを挿入します。アイドル状態などを示すメッセージの場合には、以前のレコードを更新します。 |
3 | アイドル状態を示すメッセージの場合以外は、常に新しいレコードを挿入します。 |
-HRBcpBlocks number_of_blocks
ライター スレッドとリーダー スレッド間でキューに格納される bcp データ ブロックの数です。 既定値は 50 です。 HRBcpBlocks は、Oracle パブリケーションでのみ使用されます。
Note
このパラメーターは、Oracle パブリッシャーから bcp パフォーマンスのチューニングを行う場合に使用されます。
-HRBcpBlockSizeblock_size
各 bcp データ ブロックのサイズ (KB) です。 既定値は 64 KB です。 HRBcpBlocks は、Oracle パブリケーションでのみ使用されます。
Note
このパラメーターは、Oracle パブリッシャーから bcp パフォーマンスのチューニングを行う場合に使用されます。
-HRBcpDynamicBlocks
各 bcp データ ブロックのサイズが動的に拡張可能かどうかを示します。 HRBcpBlocks は、Oracle パブリケーションでのみ使用されます。
Note
このパラメーターは、Oracle パブリッシャーから bcp パフォーマンスのチューニングを行う場合に使用されます。
-KeepAliveMessageInterval keep_alive_interval
MSsnapshot_history テーブルに "waiting for backend message" が記録されるまでのスナップショット エージェントの待機時間 (秒) です。 既定値は 300 秒です。
-LoginTimeOut login_time_out_seconds
ログインがタイムアウトになるまでの秒数です。既定値は 15 秒です。
-MaxBcpThreads number_of_threads
並列実行できる一括コピーの操作数を指定します。 同時に存在するスレッドと ODBC 接続の最大数は、 MaxBcpThreads の値と、ディストリビューション データベースの同期トランザクションに示されている一括コピー要求の数の小さい方の値になります。 MaxBcpThreads は 0 よりも大きくする必要があり、上限はありません。 既定値は、プロセッサの数の 2 倍です。
Note
レプリケートされたオブジェクトにフィルターがある場合、スナップショット エージェントにより、複数の BCP ファイルが生成されるのではなく、そのアーティクルに対して 1 つの BCP ファイルのみが生成されます。
- MaxNetworkOptimization [ 0| 1]
無関係な削除がサブスクライバーに送られたかどうかを示します。 無関係な削除とは、サブスクライバーのパーティションに属さない行に対する DELETE コマンドがサブスクライバーに送られたことを表します。 無関係な削除はデータの整合性や収束には影響しませんが、不要なネットワーク トラフィックを生じます。 MaxNetworkOptimization の既定値は 0です。 MaxNetworkOptimization を 1 に設定すると、無関係な削除が発生する可能性が最小限に抑えられ、ネットワーク トラフィックが減少し、最もネットワークが最適化されます。 ただし、このパラメーターを 1 に設定するとメタデータの保存領域が増加するため、複数レベルの結合フィルターと複雑なサブセット フィルターが存在する場合、パブリッシャーのパフォーマンスが低下します。 レプリケーション トポロジを慎重に評価する必要があります。無関係な削除によるネットワーク トラフィックが容認できないほど大きい場合に限り、 MaxNetworkOptimization を 1 に設定してください。
Note
このパラメーターを 1 に設定することが役立つのは、マージ パブリケーションの同期最適化オプション (sp_addmergepublication (Transact-SQL) の@keep_partition_changes**
パラメーター) が true に設定されている場合のみです。
-Output output_path_and_file_name
エージェントの出力ファイルのパスです。 ファイル名が指定されていない場合、出力はコンソールに送られます。 指定された名前のファイルが存在する場合、出力はそのファイルに追加されます。
-OutputVerboseLevel [ 0| 1| 2]
出力を詳細表示にするかどうかを指定します。
OutputVerboseLevel の値 | 説明 |
---|---|
0 | エラー メッセージのみが記録されます。 |
1 (既定値) | すべての進行状況レポート メッセージが出力されます (既定)。 |
2 | すべてのエラー メッセージと進行状況レポート メッセージが出力されます。これはデバッグの際に役立ちます。 |
-PacketSize packet_size
SQL Server への接続中にスナップショット エージェントが使用するパケット サイズ (バイト) です。 既定値は 8,192 バイトです。
Note
パフォーマンスの向上が明確でない限り、パケット サイズは変更しないでください。 多くのアプリケーションでは、既定のパケット サイズが最適です。
-PrefetchTables [ 0| 1]
テーブル オブジェクトがプリフェッチされてキャッシュされるかどうかを指定する、省略可能なパラメーターです。 既定の動作では、内部の計算に基づき SMO コンポーネントを使用して特定のテーブルのプロパティがプリフェッチされます。 このパラメーターは、SMO のプリフェッチ操作の実行にかなりの時間がかかるシナリオで役立つ場合があります。 このパラメーターを使用しない場合は、パブリケーションにアーティクルとして追加されるテーブルの割合に基づいて、実行時にこの決定が行われます。
OutputVerboseLevel の値 | 説明 |
---|---|
0 | SMO コンポーネントのプリフェッチ メソッドの呼び出しは無効です。 |
1 | スナップショット エージェントはプリフェッチ メソッドを呼び出し、SMO を使用していくつかのテーブルのプロパティをキャッシュします |
-ProfileName profile_name
エージェント パラメーターに使用するエージェント プロファイルを指定します。 ProfileName が NULL の場合、このエージェント プロファイルは無効になります。 ProfileName を指定しない場合、エージェントの種類に応じた既定のプロファイルが使われます。 詳細については、「レプリケーション エージェント プロファイル」を参照してください。
-PublisherDB publisher_database
パブリケーション データベースの名前です。 このパラメーターは、Oracle パブリッシャーについてはサポートされません。
-PublisherDeadlockPriority [-1|0|1]
デッドロックが発生した場合のパブリッシャーへのスナップショット エージェント接続の優先度です。 このパラメーターは、スナップショットの生成中にスナップショット エージェントとユーザー アプリケーション間で発生する可能性のあるデッドロックを解決するために指定します。
PublisherDeadlockPriority の値 | 説明 |
---|---|
-1 | パブリッシャー側でデッドロックが発生した場合、スナップショット エージェント以外のアプリケーションが優先されます。 |
0 (既定値) | 優先度は割り当てられません。 |
1 | パブリッシャー側でデッドロックが発生した場合、スナップショット エージェントが優先されます。 |
-PublisherFailoverPartner server_name[\instance_name]
パブリケーション データベースとのデータベース ミラーリング セッションに参加する、SQL Server フェールオーバー パートナー インスタンスを指定します。 詳細については、「データベース ミラーリングとレプリケーション (SQL Server)」をご覧ください。
-PublisherLogin publisher_login
SQL Server 認証を使用してパブリッシャーに接続するときに使用されるログインです。
-PublisherPassword publisher_password
SQL Server 認証を使用してパブリッシャーに接続するときに使用されるパスワードです。 .
-PublisherSecurityMode [ 0| 1]
パブリッシャーのセキュリティ モードを指定します。 値 0 は SQL Server 認証 (既定値) を示し、値 1 は Windows 認証モードを示します。
-QueryTimeOut query_time_out_seconds
クエリがタイムアウトするまでの秒数です。既定値は 1800 秒です。
-ReplicationType [ 1| 2]
レプリケーションの種類を指定します。 値 1 はトランザクション レプリケーションを示し、値 2 はマージ レプリケーションを示します。
-RowDelimiter row_delimiter
SQL Server 一括コピーで扱うデータ ファイルの各行の末尾を示す 1 文字または文字列です。 既定値は \n<,@g>\n です。
-StartQueueTimeout start_queue_timeout_seconds
実行中の同時実行動的スナップショット処理のメンバー数が、sp_addmergepublication (Transact-SQL) の @max_concurrent_dynamic_snapshots
プロパティの設定による制限に達している場合に、スナップショット エージェントの最大待機時間を秒単位で指定します。 最大秒数に達したときにスナップショット エージェントがまだ待機している場合、スナップショット エージェントは待機を終了します。 値が 0 の場合は、このエージェントが無期限に待機することを意味しますが、取り消すこともできます。
- UsePerArticleContentsView use_per_article_contents_view
このパラメーターは非推奨とされます。旧バージョンとの互換性のためにサポートされています。
解説
重要
ドメイン ユーザー アカウント (既定値) ではなくローカル システム アカウントで実行するように SQL Server エージェントがインストールされている場合、サービスはローカル コンピューターにしかアクセスできません。 SQL Server エージェント下で実行するスナップショット エージェントで、SQL Server へのログイン時に Windows 認証モードを使用するように構成すると、スナップショット エージェントは異常終了します。 既定の設定は SQL Server 認証です。
スナップショット エージェントを開始するには、コマンド プロンプトから snapshot.exe を実行します。 詳細については、「 レプリケーション エージェント実行可能ファイルのプログラミング」を参照してください。