共用方式為


複寫散發代理程式

適用於:SQL Server Azure SQL 資料庫

「複寫散發代理程式」是一個可執行檔,它會將快照集 (快照式複寫與異動複寫) 和散發資料庫資料表中保存的交易 (異動複寫) 移動至位於「訂閱者」端的目的地資料表。

注意

您可以使用任何順序來指定參數。 未指定選擇性參數時,會使用本機計算機上的預先定義登錄設定值。

語法

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 ]

發行者的名稱。 <server_name>指定該伺服器上Microsoft SQL Server 的預設實例。 <server_name>\<instance_name>指定該伺服器上的 SQL Server 具名實例。 如果您的發行者資料庫位於可用性群組 (AG),這仍然會反映原始的主要發行者伺服器名稱,因為 sp_redirect_publisher。 它不會反映 AG 接聽程式名稱。

-PublisherDB publisher_database

發行者資料庫的名稱。

-Subscriber server_name [ \instance_name ]

訂閱者的名稱。 <server_name>指定該伺服器上 SQL Server 的預設實例。 <server_name>\<instance_name>指定該伺服器上的 SQL Server 具名實例。 如果您的訂閱者資料庫位於 AG 中,這應該會反映 AG 接聽程式名稱。

-SubscriberDB subscriber_database

訂閱者資料庫的名稱。

-AltSnapshotFolder alt_snapshot_folder_path

包含訂用帳戶初始快照集的資料夾路徑。

-BcpBatchSize bcp_batch_size

在大量複製作業中傳送的數據列數目。 當您執行bcp in作業時,批次大小是傳送至伺服器做為一筆交易的數據列數目,以及 散發代理程式 記錄 bcp 進度訊息之前必須傳送的數據列數目。 當您執行 bcp out 作業時,會使用的 1000 固定批次大小。

-CommitBatchSize commit_batch_size

在發出 COMMIT 語句之前,要發行給訂閱者的交易數目。 預設值為 100,最大值為 10000。 當 散發代理程式 在訂閱者上套用快照集時,會忽略此參數。

-CommitBatchThreshold commit_batch_threshold

在發出 COMMIT 語句之前,要發出給訂閱者的複寫命令數目。 預設值為 1000,最大值為 10000。 當 散發代理程式 在訂閱者上套用快照集時,會忽略此參數。

-Continuous

指定代理程式是否會嘗試持續輪詢複寫的交易。 如果您指定了這個參數,代理程式就會以輪詢間隔輪詢來源的複寫交易,即使沒有任何交易暫止也一樣。

-DefinitionFile def_path_and_file_name

代理程式定義檔的路徑。 代理程式定義檔包含代理程式的命令提示字元引數。 此檔案的內容會剖析為可執行檔。 請使用雙引號 (") 來指定包含任意字元的引數值。

-散發者散發者

散發者名稱。 若為散發者 (發送) 散發,此名稱會預設為本機散發者的名稱。 如果您的散發者資料庫位於 AG 中,這應該會反映 AG 接聽程式名稱。

-DistributorLogin distributor_login

散發者登入名稱。

-DistributorPassword distributor_password

散發者密碼。

-DistributorSecurityMode [ 0 | 1 ]

指定散發者的安全性模式。 值為 0 表示 SQL Server 驗證模式,而值為 1 則表示 Windows 驗證模式 (預設)。

-EncryptionLevel [ 0 | 1 | 2 ]

傳輸層安全性層級 (TLS),先前稱為安全套接字層 (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 (預設值) 一律更新相同狀態的上一個記錄訊息 (啟動、進度、成功等等)。 如果沒有任何具有相同狀態的上一筆記錄存在,便插入新的記錄。
2 除非記錄用於閒置訊息或長時間執行作業訊息等事件 (在此情況下,更新之前的記錄),否則便插入新的記錄。
3 除非是用於閑置訊息,否則請一律插入新記錄。

-Hostname host_name

連接到發行者時所使用的主機名。 這個參數最多可以有 128 個 Unicode 字元。

-KeepAliveMessageInterval keep_alive_message_interval_seconds

歷程記錄線程之前的秒數會檢查是否有任何現有的連線正在等候伺服器的回應。 執行長時間執行的批次時,您可以減少這個值,避免檢查代理程式將散發代理程式標示為有疑問。 預設值為 300 秒。

-LoginTimeOut login_time_out_seconds

登入逾時之前的秒數。預設值為 15 秒。

-MaxBcpThreads number_of_threads

指定可用平行方式執行的大量複製作業數目。 同時存在的線程和 ODBC 連接數目上限是較少 MaxBcpThreads 或散發資料庫中同步處理交易中顯示的大量複製要求數目。 MaxBcpThreads 必須具有大於 0 且沒有硬式編碼上限的值。 預設值是 2 處理器數目的次數,最大值上限為 8。 使用並行快照集選項在發行者端套用產生的快照集時,不論您為 MaxBcpThreads指定的數字為何,都會使用一個線程。

-MaxDeliveredTransactions number_of_transactions

在一次同步處理中,套用至訂閱者的最大推送或提取交易數目。 的值 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 ,則為 Jet 資料庫的路徑(.mdb檔案)(允許連線至沒有 ODBC 數據源名稱的 Jet 資料庫 (DSN))。

-SubscriberLogin subscriber_login

訂閱者登入名稱。 如果 SubscriberSecurityMode0 (針對 SQL Server 驗證),則必須指定此參數。

-SubscriberPassword subscriber_password

訂閱者密碼。 如果 SubscriberSecurityMode0 (針對 SQL Server 驗證),則必須指定此參數。

-SubscriberSecurityMode [ 0 | 1 ]

指定訂閱者的安全性模式。 的值 0 表示 SQL Server 驗證,而的值 1 則表示 Windows 驗證模式 (預設值)。

-SubscriberType [ 0 | 1 | 3 ]

指定由散發代理程式所使用的訂閱者連接類型。

SubscriberType 值 描述
0 SQL Server
1 ODBC 資料來源
3 OLE DB 資料來源

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

每個 散發代理程式 允許的連線數目,以平行方式將變更批次套用至「訂閱者」,同時維護使用單個線程時存在的許多交易特性。 若為 SQL Server 發行者,就支援範圍在 1 至 64 之間的值。

不支援此參數,或必須是 0 非 SQL Server 訂閱者或點對點訂閱。 當散發代理程式在訂閱者上套用快照集時,會忽略此參數。

如果其中一個連線無法執行或認可,則所有連線都會中止目前的批次,而代理程式會使用單一數據流重試失敗的批次。 在此重試階段完成之前,「訂閱者」端可能會出現暫時的交易不一致性。 成功認可失敗的批次後,「訂閱者」將返回交易一致性的狀態。

重要

當您針對 -SubscriptionStreams指定 值2或大於 時,在訂閱者端接收交易的順序可能會與發行者端的交易順序不同。 如果此行為在同步處理期間造成條件約束違規,您應該使用 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 服務帳戶的安全性內容。

-UseOledbStream

指定這個參數時,可將二進位大型物件資料繫結成資料流。 使用 -OledbStreamThreshold 來指定大小,以位元組為單位,在上面使用數據流。 UseOledbStreaming 預設為啟用。

在 SQL Server 2017 (14.x) CU 22 和更新版本中, UseOledbStreaming 寫入資料夾 C:\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 2022 (16.x) CU 16 和更新版本中,您可以更新 -UseOledbStreaming 來停用 OLE DB 串流,以避免0在 SQL Server 中執行 散發代理程式 時的錯誤訊息中所述的錯誤。

備註

如果您已安裝 SQL Server Agent 以在本機系統帳戶下執行,而不是在網域用戶帳戶下執行(預設值),則服務只能存取本機計算機。 如果在 SQL Server Agent 底下執行的散發代理程式設定為使用 Windows 驗證模式,當它登入 SQL Server 執行個體時,散發代理程式就會失敗。 預設設定為 SQL Server 驗證。 View and Modify Replication Security Settings如需有關變更安全性帳戶的詳細資訊,請參閱<>。

若要啟動 散發代理程式,請從命令提示字元執行distrib.exe。 如需詳細資訊,請參閱複寫代理程式可執行檔概念