Replication Distribution Agent

適用対象: SQL Server Azure SQL データベース

レプリケーション ディストリビューション エージェントは、ディストリビューション データベース テーブルに登録されたスナップショット (スナップショット レプリケーションの場合) とトランザクション (トランザクション レプリケーションの場合) を、サブスクライバーのレプリケーション先のテーブルに移動する実行可能ファイルです。

Note

パラメーターは任意の順序で指定できます。 省略可能なパラメーターを指定しない場合は、ローカル コンピューターの定義済みのレジストリ設定の値が使用されます。

構文

distrib [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
-Subscriber server_name [ \instance_name ]
-SubscriberDB subscriber_database
[ -AltSnapshotFolder alt_snapshot_folder_path ]
[ -BcpBatchSize bcp_batch_size ]
[ -CommitBatchSize commit_batch_size ]
[ -CommitBatchThreshold commit_batch_threshold ]
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor distributor ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ErrorFile error_path_and_file_name ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -FileTransferType [ 0 | 1 ] ]
[ -FtpAddress ftp_address ]
[ -FtpPassword ftp_password ]
[ -FtpPort ftp_port ]
[ -FtpUserName ftp_user_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 | 3 ] ]
[ -Hostname host_name ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -MaxBcpThreads ]
[ -MaxDeliveredTransactions number_of_transactions ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -OledbStreamThreshold oledb_stream_threshold ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -Publication publication ]
[ -QueryTimeOut query_time_out_seconds ]
[ -QuotedIdentifier quoted_identifier ]
[ -SkipErrors native_error_id [ :...n ] ]
[ -SubscriberDatabasePath subscriber_path ]
[ -SubscriberLogin subscriber_login ]
[ -SubscriberPassword subscriber_password ]
[ -SubscriberSecurityMode [ 0 | 1 ] ]
[ -SubscriberType [ 0 | 1 | 3 ] ]
[ -SubscriptionStreams [ 1 | 2 | ...64 ] ]
[ -SubscriptionTableName subscription_table ]
[ -SubscriptionType [ 0 | 1 | 2 ] ]
[ -TransactionsPerHistory [ 0 | 1 | ...10000 ] ]
[ -UseDTS ]
[ -UseInprocLoader ]
[ -UseOledbStreaming ]

引数

-?

使用できるすべてのパラメーターを表示します。

-Publisher server_name [ \instance_name ]

パブリッシャーの名前。 そのサーバー上の Microsoft SQL Server の既定のインスタンスの <server_name> を指定します。 そのサーバー上の SQL Server の名前付きインスタンスの <server_name>\<instance_name> を指定します。 パブリッシャー データベースが可用性グループ (AG) 内にある場合でも、 sp_redirect_publisherが原因で元のプライマリ パブリッシャー サーバー名が反映されます。 AG リスナー名は反映されません。

-PublisherDB publisher_database

パブリッシャー データベースの名前。

-Subscriber server_name [ \instance_name ]

サブスクライバーの名前。 そのサーバー上の SQL Server の既定のインスタンスの <server_name> を指定します。 そのサーバー上の SQL Server の名前付きインスタンスの <server_name>\<instance_name> を指定します。 サブスクライバー データベースが AG 内にある場合、これは AG リスナー名を反映している必要があります。

-SubscriberDB subscriber_database

サブスクライバー データベースの名前。

-AltSnapshotFolder alt_snapshot_folder_path

サブスクリプションの初期スナップショットを含むフォルダーへのパス。

-BcpBatchSize bcp_batch_size

一括コピー操作で送信する行の数。 bcp in操作を実行する場合、バッチ サイズは、1 つのトランザクションとしてサーバーに送信する行の数と、ディストリビューション エージェントがbcp進行状況メッセージをログに記録する前に送信する必要がある行の数です。 bcp out操作を実行すると、1000の固定バッチ サイズが使用されます。

-CommitBatchSize commit_batch_size

COMMIT ステートメントが発行される前にサブスクライバーに発行されるトランザクションの数。 既定は 100、最大値は 10,000 です。 ディストリビューション エージェントによってサブスクライバーにスナップショットが適用されている場合、このパラメーターは無視されます。

-CommitBatchThreshold commit_batch_threshold

COMMIT ステートメントが発行される前にサブスクライバーに対して発行されるレプリケーション コマンドの数。 既定は 1,000、最大値は 10,000 です。 ディストリビューション エージェントによってサブスクライバーにスナップショットが適用されている場合、このパラメーターは無視されます。

-Continuous

エージェントがレプリケートされたトランザクションの呼び出しを継続的に試みるかどうかを指定します。 このパラメーターを指定する場合、保留されているトランザクションがなくても、エージェントはポーリング間隔でレプリケートされたトランザクションをソースから呼び出します。

-DefinitionFile def_path_and_file_name

エージェント定義ファイルのパス。 エージェント定義ファイルには、エージェントのコマンド プロンプト引数が含まれます。 ファイルの内容は実行可能ファイルとして解析されます。 二重引用符 (") を使用して、任意の文字を含む引数値を指定します。

-Distributor distributor

ディストリビューター名。 ディストリビューター (プッシュ) ディストリビューションの場合、既定値はローカル ディストリビューターの名前になります。 ディストリビューター データベースが AG 内にある場合、これは AG リスナー名を反映している必要があります。

-DistributorLogin distributor_login

ディストリビューターのログイン名。

-DistributorPassword distributor_password

ディストリビューターのパスワード。

-DistributorSecurityMode [ 0 | 1 ]

ディストリビューターのセキュリティ モードを指定します。 値 0 は SQL Server 認証モードを指定し、値 1 は Windows 認証モード (既定値) を指定します。

-EncryptionLevel [ 0 | 1 | 2 ]

トランスポート層セキュリティ (TLS) のレベル。以前は Secure Sockets Layer (SSL) と呼ばれ、接続時にディストリビューション エージェントによって使用される暗号化です。

EncryptionLevel の値 説明
0 TLS が使用されていないことを指定します。
1 TLS を使用することを指定しますが、エージェントは TLS サーバー証明書が信頼された発行者によって署名されていることを確認しません。
2 TLS を使用し、証明書を検証することを指定します。

有効な TLS 証明書は、SQL Server の完全修飾ドメイン名で定義されます。 -EncryptionLevel2 に設定するときにエージェントが正常に接続できるようにするには、ローカル SQL Server にエイリアスを作成します。 'Alias Name' パラメーターはサーバー名にし、'Server' パラメーターは SQL Server の完全修飾名に設定する必要があります。

詳細については、「 View and Modify Replication Security Settings」を参照してください。

-ErrorFile error_path_and_file_name

ディストリビューション エージェントによって生成されたエラー ファイルのパスとファイル名。 このファイルは、サブスクライバーでのレプリケーション トランザクションの適用中にエラーが発生した時点で生成されます。パブリッシャーまたはディストリビューターで発生したエラーは、このファイルに記録されません。 このファイルには、障害が発生したレプリケーション トランザクションおよび関連するエラー メッセージが含まれます。 指定しない場合は、エラー ファイルはディストリビューション エージェントの現在のディレクトリに作成されます。 エラー ファイル名は、ディストリビューション エージェントの名前に .err 拡張子を付けた名前です。 指定したファイル名が既存の場合、エラー メッセージはこのファイルに追加されます。 このパラメーターには最大 256 個の Unicode 文字を指定できます。

-ExtendedEventConfigFile configuration_path_and_file_name

拡張イベントの XML 構成ファイルのパスとファイル名を指定します。 拡張イベントの構成ファイルによって、追跡に必要なセッションを構成し、イベントを有効にすることができます。

-FileTransferType [ 0 | 1 ]

ファイル転送の種類を指定します。 0の値は UNC (汎用名前付け規則) を示し、1の値は FTP (ファイル転送プロトコル) を示します。

-FtpAddress ftp_address

ディストリビューターの FTP サービスのネットワーク アドレス。 指定しない場合は、 DistributorAddress が使用されます。 DistributorAddress が指定されていない場合は、Distributor が使用されます。

-FtpPassword ftp_password

FTP サービスへの接続に使用するユーザー パスワード。

-FtpPort ftp_port

ディストリビューターの FTP サービスのポート番号。 このパラメーターを指定しない場合、FTP サービスの既定のポート番号 (21) が使用されます。

-FtpUserName ftp_user_name

FTP サービスへの接続に使用するユーザー名。 指定しない場合は、 anonymous が使用されます。

-HistoryVerboseLevel [ 0 | 1 | 2 | 3 ]

ディストリビューション操作中にログに記録する履歴の量を指定します。 1を選択すると、履歴ログのパフォーマンス効果を最小限に抑えることができます。

HistoryVerboseLevel の値 説明
0 進行状況メッセージがコンソールまたは出力ファイルに書き込まれます。 履歴レコードはディストリビューション データベースに記録されません。
1 (既定) 同じ状態 (startup、progress、success など) を示している以前の履歴メッセージを常に更新します。 前回の記録に同じ状態がない場合は、新しい記録を挿入します。
2 アイドル状態や長時間実行を示すメッセージでない場合、新しい履歴レコードを挿入します。アイドル状態などを示すメッセージの場合には、以前のレコードを更新します。
3 アイドル状態のメッセージの場合を除き、常に新しいレコードを挿入します。

-Hostname host_name

パブリッシャーに接続するときに使用されるホスト名。 このパラメーターには最大 128 個の Unicode 文字を指定できます。

-KeepAliveMessageInterval keep_alive_message_interval_seconds

既存の接続のいずれかがサーバーからの応答を待機しているかどうかを、履歴スレッドが確認するまでの秒数。 この値を小さくすれば、ディストリビューション エージェントが時間のかかるバッチを実行しているとき、照合エージェントによって SUSPECT とマークされるのを防ぐことができます。 既定値は 300 秒です。

-LoginTimeOut login_time_out_seconds

ログインがタイムアウトするまでの秒数。既定値は 15 秒です。

-MaxBcpThreads number_of_threads

並列実行できる一括コピーの操作数を指定します。 同時に存在するスレッドと ODBC 接続の最大数は、ディストリビューション データベースの同期トランザクションに表示される MaxBcpThreads または一括コピー要求の数が少なくなります。 MaxBcpThreads は、 0 より大きい値を持つ必要があり、ハードコーディングされた上限はありません。 既定値はプロセッサの数の 2 倍で、最大値は 8 です。 同時実行スナップショット オプションを使用してパブリッシャーで生成されたスナップショットを適用する場合、 MaxBcpThreadsに指定した数に関係なく、1 つのスレッドが使用されます。

-MaxDeliveredTransactions number_of_transactions

1 回の同期でサブスクライバーに適用されるプッシュ トランザクションまたはプル トランザクションの最大数。 0の値は、最大値が無限のトランザクション数であることを示します。 その他の値は、サブスクライバーがパブリッシャーからプルする同期の経過時間を短縮するときに使用できます。

-MaxDeliveredTransactions-Continuousの両方が指定されている場合、ディストリビューション エージェントは指定された数のトランザクションを配信し、(-Continuousが指定されている場合でも) 停止します。 ジョブが完了した後、ディストリビューション エージェントを再起動してください。

-MessageInterval message_interval

履歴ログに使用される時間間隔。 次のいずれかの場合、履歴イベントはログに記録されます。

  • TransactionsPerHistory値は、最後の履歴イベントがログに記録された後に達します。

  • MessageInterval値は、最後の履歴イベントがログに記録された後に達します。

ソースで使用できるレプリケートされたトランザクションがない場合、エージェントはトランザクションなしメッセージをディストリビューターに報告します。 このオプションは、エージェントが次にトランザクションなしのメッセージを報告するまでの待ち時間を指定します。 前回レプリケートされたトランザクションを処理した後で、ソースに利用可能なトランザクションがないことを検出すると、エージェントは必ずトランザクションなしのメッセージを報告します。 既定値は 60 秒です。

-MultiSubnetFailover

適用対象: SQL Server 2019 (15.x) 以降のバージョン。

MultiSubnetFailover プロパティを有効にするかどうかを指定します。 アプリケーションが異なるサブネット上の AG に接続している場合、MultiSubnetFailover=true を設定すると、(現在) アクティブなサーバーの検出と接続が高速化されます。

-OledbStreamThreshold oledb_stream_threshold

データがストリームとしてバインドされるバイナリ ラージ オブジェクト データの最小サイズをバイト単位で指定します。 このパラメーターを使用するには、 -UseOledbStreaming を指定する必要があります。 値の範囲は 400 バイトから 1,048,576 バイトで、既定値は 16,384 バイトです。

-Output output_path_and_file_name

エージェント出力ファイルのパス。 ファイル名が指定されていない場合、出力はコンソールに送信されます。 指定された名前のファイルが存在する場合、出力はそのファイルに追加されます。

-OutputVerboseLevel [ 0 | 1 | 2 ]

出力を詳細表示にするかどうかを指定します。 詳細レベルが 0の場合は、エラー メッセージのみが出力されます。 詳細レベルが 1場合は、すべての進行状況レポート メッセージが出力されます。 詳細レベルが 2 (既定) の場合、すべてのエラー メッセージと進行状況レポート メッセージが出力されます。これはデバッグに役立ちます。

-PacketSize packet_size

パケット サイズ (バイト単位)。 既定値は 4096 (バイト) です。

-PollingInterval polling_interval

ディストリビューション データベースがレプリケートされたトランザクションに対してクエリを実行する頻度 (秒単位)。 既定値は 5 秒です。

-ProfileName profile_name

エージェント パラメーターに使用するエージェント プロファイルを指定します。 ProfileNameNULLされている場合、エージェント プロファイルは無効になります。 ProfileNameが指定されていない場合は、エージェントの種類の既定のプロファイルが使用されます。 詳細については、「レプリケーション エージェント プロファイル」を参照してください。

-Publication publication

出版物の名前。 このパラメーターは、新規または再初期化されたサブスクリプションのスナップショットを常に利用できるようにパブリケーションを設定している場合にのみ有効です。

-QueryTimeOut query_time_out_seconds

クエリがタイムアウトするまでの秒数。既定値は 1,800 秒です。

-QuotedIdentifier quoted_identifier

使用する引用符で囲まれた識別子を指定します。 値の最初の文字は、ディストリビューション エージェントが使用する値を示します。 値なしでQuotedIdentifierを使用する場合、ディストリビューション エージェントはスペースを使用します。 QuotedIdentifierを使用しない場合、ディストリビューション エージェントはサブスクライバーがサポートする引用符で囲まれた識別子を使用します。

-SkipErrors native_error_id [ :...n ]

このエージェントによってスキップされるエラー番号を指定するコロン区切りのリスト。 ディストリビューション エージェントによってサブスクライバーにスナップショットが適用されている場合、このパラメーターは無視されます。

-SubscriberDatabasePath subscriber_database_path

SubscriberType2 (ODBC データ ソース名 (DSN) のない Jet データベースへの接続を許可する) 場合の Jet データベース (.mdb ファイル) へのパス。

-SubscriberLogin subscriber_login

サブスクライバー ログイン名。 SubscriberSecurityMode0されている場合 (SQL Server 認証の場合)、このパラメーターを指定する必要があります。

-SubscriberPassword subscriber_password

サブスクライバーのパスワード。 SubscriberSecurityMode0されている場合 (SQL Server 認証の場合)、このパラメーターを指定する必要があります。

-SubscriberSecurityMode [ 0 | 1 ]

サブスクライバーのセキュリティ モードを指定します。 0の値は SQL Server 認証を示し、1の値は Windows 認証モード (既定値) を示します。

-SubscriberType [ 0 | 1 | 3 ]

ディストリビューション エージェントが使用するサブスクライバー接続の種類を指定します。

サブスクライバーの種類 説明
0 SQL Server
1 ODBC データ ソース (ODBC data source)
3 OLE DB データ ソース

-SubscriptionStreams [ 0 | 1 | 2 | ...64 ]

1 つのスレッドを使用する場合に存在するトランザクション特性の多くを維持しながら、変更のバッチをサブスクライバーに並列で適用するために、ディストリビューション エージェントごとに許可される接続の数。 SQL Server パブリッシャーの場合、1 から 64 までの値がサポートされます。

このパラメーターはサポートされていないか、SQL Server 以外のサブスクライバーまたはピア ツー ピア サブスクリプションに対して 0 する必要があります。 ディストリビューション エージェントによってサブスクライバーにスナップショットが適用されている場合、このパラメーターは無視されます。

いずれかの接続が実行またはコミットに失敗した場合、すべての接続で現在のバッチが中止され、エージェントは 1 つのストリームを使用して失敗したバッチを再試行します。 この再試行フェーズが完了するまでは、サブスクライバー側に、トランザクションの一時的な不整合が存在する可能性があります。 サブスクライバーのトランザクション一貫性は、前回失敗したバッチが正常にコミットされた後で復元されます。

重要

-SubscriptionStreams2以上の値を指定すると、サブスクライバーでトランザクションを受信する順序がパブリッシャーで行われた順序と異なる場合があります。 この動作によって同期中に制約違反が発生する場合は、 NOT FOR REPLICATION オプションを使用して、同期中に制約の適用を無効にする必要があります。 詳細については、「 同期でのトリガーと制約の制御の動作」を参照してください。

サブスクリプション ストリームは、Transact-SQL を配信するように構成された記事では機能しません。 サブスクリプション ストリームを使用するには、代わりにストアド プロシージャ呼び出しを配信するようにアーティクルを構成します。

-SubscriptionTableName subscription_table

指定されたサブスクライバーで生成または使用されるサブスクリプション テーブルの名前。 指定しない場合は、 MSreplication_subscriptions テーブルが使用されます。 このオプションは、長いファイル名をサポートしていないデータベース管理システム (DBMS) に使用します。

-SubscriptionType [ 0 | 1 | 2 ]

ディストリビューションのサブスクリプションの種類を指定します。 0の値はプッシュ サブスクリプションを示し、値 1 はプル サブスクリプションを示し、値 2 は匿名サブスクリプションを示します。

-TransactionsPerHistory [ 0 | 1 | ...10000 ]

履歴をログに記録するトランザクション間隔を指定します。 最後に履歴をログに記録してからコミットしたトランザクションの数がこのオプションより多い場合、履歴メッセージがログに記録されます。 既定値は、100 です。 0の値は、無限のTransactionsPerHistoryを示します。 前の –MessageIntervalパラメーターを参照してください。

-UseDTS

データ変換を許可するパブリケーションでは、このパラメーターを指定する必要があります。

-UseInprocLoader

ディストリビューション エージェントがスナップショット ファイルをサブスクライバーに適用するときに、BULK INSERT コマンドが使用され、初期スナップショットのパフォーマンスが向上します。 このパラメーターは、XML データ型と互換性がないため、非推奨です。 XML データをレプリケートしない場合は、このパラメーターを使用できます。 このパラメーターは、文字モードのスナップショットや SQL Server 以外のサブスクライバーでは使用できません。 このパラメーターを使用する場合、サブスクライバーの SQL Server サービス アカウントには、スナップショット .bcp データ ファイルが配置されているディレクトリに対する読み取りアクセス許可が必要です。 このパラメーターを使用しない場合、エージェント (SQL Server サブスクライバー以外の場合) またはエージェントによって読み込まれた ODBC ドライバー (SQL Server サブスクライバーの場合) はファイルから読み取られます。そのため、SQL Server サービス アカウントのセキュリティ コンテキストは使用されません。

-UseOledbStream

指定した場合、BLOB データをストリームとしてバインドできるようになります。 -OledbStreamThresholdを使用して、ストリームが使用されるサイズ (バイト単位) を指定します。 UseOledbStreaming は既定で有効になっています。

SQL Server 2017 (14.x) CU 22 以降のバージョンでは、UseOledbStreamingC:\Users\<DistributionAgentAccount>\AppData\Temp フォルダーに書き込まれます。

SQL Server 2017 (14.x) CU 22 より前の UseOledbStreaming は、 C:\Program Files\Microsoft SQL Server\<version>\COM フォルダーに書き込まれます。

SQL Server 2019 (15.x) CU 29 では、SQL Server でディストリビューション エージェントを実行するときにエラー メッセージに記載されているエラーを回避するために0-UseOledbStreamingを更新することで、OLE DB ストリーミングを無効にすることができます

解説

ドメイン ユーザー アカウント (既定) ではなく、ローカル システム アカウントで実行するSQL Server エージェントをインストールした場合、サービスはローカル コンピューターにのみアクセスできます。 SQL Server のインスタンスへのログイン時に、SQL Server エージェントの下で実行するディストリビューション エージェントで、Windows 認証モードを使用するように構成すると、ディストリビューション エージェントは失敗します。 既定の設定は SQL Server 認証です。 セキュリティ アカウント変更の詳細については、「 View and Modify Replication Security Settings」を参照してください。

ディストリビューション エージェントを開始するには、コマンド プロンプトからdistrib.exeを実行します。 詳細については、「レプリケーション エージェント実行可能ファイルの概念」を参照してください。