sp_replcmds (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
傳回標示為複寫之交易的命令。 這個預存程式會在發行集資料庫的發行者端執行。
重要
程序 sp_replcmds
應該只執行,以針對復寫問題進行疑難解答。
語法
sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]
引數
[ @maxtrans = ] maxtrans
要傳回相關信息的交易數目。 @maxtrans為 int,預設值1
為 ,指定下一個等待散發的交易。
結果集
資料行名稱 | 資料類型 | 描述 |
---|---|---|
article id |
int | 發行項的標識碼。 |
partial_command |
bit | 指出此命令是否為部分命令。 |
command |
varbinary(1024) | 命令值。 |
xactid |
binary(10) | 交易標識碼。 |
xact_seqno |
varbinary(16) | 交易序號。 |
publication_id |
int | 發行集的標識碼。 |
command_id |
int | MSrepl_commands 中命令的標識碼。 |
command_type |
int | 命令的類型。 |
originator_srvname |
sysname | 發生交易的伺服器。 |
originator_db |
sysname | 交易來源的資料庫。 |
pkHash |
int | 僅供內部使用。 |
originator_publication_id |
int | 交易來源之發行集的標識碼。 |
originator_db_version |
int | 交易來源的資料庫版本。 |
originator_lsn |
varbinary(16) | 識別原始發行集中命令的記錄序號 (LSN)。 |
備註
sp_replcmds
由事務複製中的記錄讀取器進程使用。
複寫會將指定資料庫內執行 sp_replcmds
的第一個客戶端視為記錄讀取器。
此程式可以產生擁有者限定數據表的命令,或不符合數據表名稱(預設值)。 新增限定數據表名稱可讓某個資料庫中特定使用者所擁有的數據表,將數據復寫到另一個資料庫中相同使用者所擁有的數據表。
因為源資料庫中的數據表名稱是以擁有者名稱限定,因此目標資料庫中數據表的擁有者必須是相同的擁有者名稱。
嘗試在相同資料庫內執行的 sp_replcmds
用戶端會收到錯誤 18752,直到第一個用戶端中斷連線為止。 第一個用戶端中斷連線之後,另一個用戶端可以執行 sp_replcmds
,並成為新的記錄讀取器。
如果無法復寫文字命令,則會 sp_replcmds
將警告訊息編號 18759 新增至 SQL Server 錯誤記錄檔和Microsoft Windows 應用程式記錄檔,因為文字指標未在同一筆交易中擷取。
權限
只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行 sp_replcmds
。