Replication Distribution Agent

適用対象:SQL ServerAzure SQL Database

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

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]  

引数

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

-Publisherserver_name[\instance_name]
パブリッシャーの名前です。 サーバー上で、Microsoft SQL Server の既定のインスタンスに接続するには server_name を指定します。 サーバー上で、 SQL Server の名前付きインスタンスに接続するには server_name\instance_name を指定します。 パブリッシャー データベースが Always On 可用性グループに含まれている場合でも、sp_redirect_publisher のため、元のプライマリ パブリッシャー サーバー名が反映されます。 AG リスナー名は反映されません。

-PublisherDBpublisher_database
パブリッシャー データベースの名前です。

-Subscriberserver_name[\instance_name]
サブスクライバーの名前です。 サーバー上で、SQL Server の既定のインスタンスに接続するには server_name を指定します。 サーバー上で、 SQL Server の名前付きインスタンスに接続するには server_name\instance_name を指定します。 サブスクライバー データベースが Always On 可用性グループに含まれている場合は、これは AG リスナー名を反映している必要があります。

-SubscriberDBsubscriber_database
サブスクライバー データベースの名前です。

-AltSnapshotFolderalt_snapshot_folder_path
サブスクリプションの初期スナップショットが含まれるフォルダーへのパスです。

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

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

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

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

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

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

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

-DistributorPassworddistributor_password
ディストリビューターのパスワードです。

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

-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 の完全修飾名に設定する必要があります。

詳細については、「レプリケーションのセキュリティ設定の表示および変更」を参照してください。

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

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

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

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

-FtpPasswordftp_password
FTP サービスに接続するときに使用するユーザー パスワードです。

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

-FtpUserNameftp_user_name
FTP サービスに接続するときに使用するユーザー名です。 指定しない場合、 anonymous が使用されます。

-HistoryVerboseLevel [ 0 | 1 | 2 | 3]
ディストリビューション操作中にログに記録する履歴の量を指定します。 1を選択すれば、ログへの履歴の記録がパフォーマンスに与える影響を最小限に抑えることができます。

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

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

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

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

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

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

Note

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

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

  • 最後の履歴イベントをログに記録した後、 TransactionsPerHistory の値が経過した場合

  • 最後の履歴イベントをログに記録した後、 MessageInterval の値が経過した場合

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

-MultiSubnetFailover MultiSubnetFailover プロパティを有効にするかどうかを指定します。 アプリケーションが異なるサブネット上の AlwaysOn 可用性グループ (AG) に接続している場合、MultiSubnetFailover=true に設定すると、(現在) アクティブなサーバーの検出と接続が速くなります。
適用対象: SQL Server (SQL Server 2019 (15.x) 以降)。

-OledbStreamThresholdoledb_stream_threshold
BLOB データの最小バイト サイズを指定します。この値を超えると、データはストリームとしてバインドされます。 このパラメーターを使用するためには、-UseOledbStreaming を指定する必要があります。 400 バイトから 1048576 バイトまでの値を指定できます。既定値は 16384 バイトです。

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

-OutputVerboseLevel [ 0| 1| 2]
出力を詳細表示にするかどうかを指定します。 詳細レベルが 0の場合、エラー メッセージだけが出力されます。 詳細レベルが 1の場合、すべての実行状況報告メッセージが出力されます。 詳細レベルが 2 (既定値) の場合、すべてのエラー メッセージと実行状況報告メッセージが出力されます。これはデバッグ時に便利です。

-PacketSizepacket_size
パケット サイズをバイト単位で指定します。 既定値は 4096 (バイト) です。

-PollingIntervalpolling_interval_
レプリケートされたトランザクションに関してディストリビューション データベースをクエリする間隔を秒単位で示します。 既定値は 5 秒です。

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

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

-QueryTimeOutquery_time_out_seconds
クエリがタイムアウトするまでの秒数です。既定値は 1800 秒です。

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

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

-SubscriberDatabasePathsubscriber_database_path
SubscriberType2 の場合、Jet データベース (.mdb) ファイルへのパスを指定します。この指定では、ODBC データ ソース名 (DSN) なしで Jet データベースに接続することができます。

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

-SubscriberPasswordsubscriber_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]
単一のスレッドを使用しているときに、トランザクションに関連したさまざまな特性を維持しながら、サブスクライバーに対してバッチ変更を適用することのできる、ディストリビューション エージェントあたりの接続数です。 SQL Server パブリッシャーの場合、1 から 64 までの値がサポートされます。 このパラメーターは、パブリッシャーとディストリビューターが SQL Server 2005 (9.x) 以降のバージョンで実行されている場合にのみ使用できます。 SQL Server 以外のサブスクライバーまたはピア ツー ピア サブスクリプションの場合は、このパラメーターを使用しないか、0 にする必要があります。 ディストリビューション エージェントによってサブスクライバーにスナップショットが適用されている場合、このパラメーターは無視されます。

Note

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

重要

-SubscriptionStreamsに対して 2 以上の値を指定すると、サブスクライバー側でトランザクションが受信される順序が、パブリッシャー側でトランザクションが作成された順序と異なる場合があります。 この動作が原因で同期中に制約違反が発生する場合は、NOT FOR REPLICATION オプションを使用して同期中の制約の適用を無効にする必要があります。 詳細については、「同期中にトリガと制約の動作を制御する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

Note

Subscriptionstreams は、Transact-SQL を渡すように構成されたアーティクルでは使用できません。 subscriptionstreams を使用するには、代わりにストアド プロシージャの呼び出しを渡すようにアーティクルを構成します。

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

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

-TransactionsPerHistory [ 0| 1|... 10000]
履歴をログに記録するトランザクション間隔を指定します。 最後に履歴をログに記録してからコミットしたトランザクションの数がこのオプションより多い場合、履歴メッセージがログに記録されます。 既定値は、100 です。 値 0 は、 TransactionsPerHistoryが無制限であることを指定します。 See the preceding –MessageIntervalparameter.

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

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

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

Note

SQL 2017 CU22 以降のバージョン (SQL 2019 RTM を含む) の場合、UseOledbStreaming は c:\Users\<DistributionAgentAccount>\AppData\Temp フォルダーに書き込みます。

SQL 2017 CU22 よりも以前の場合、UseOledbStreaming は、C:\Program Files\Microsoft SQL Server\<version>\COM フォルダーに書き込みます。

解説

重要

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

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

変更履歴

変更内容
-ExtendedEventConfigFile パラメーターを追加しました。
-MultiSubnetFailover パラメーターを追加しました。

参照

レプリケーション エージェントの管理