將在給定的數(shù)據(jù)庫(kù)內(nèi)運(yùn)行 sp_replcmds 的第一個(gè)客戶端視為日志讀取器。返回被標(biāo)記為復(fù)制的事務(wù)的命令。此存儲(chǔ)過(guò)程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫(kù)上執(zhí)行。
sp_replcmds [ @maxtrans = ] maxtrans
[@maxtrans =] maxtrans
是返回其信息的事務(wù)數(shù)。maxtrans 的數(shù)據(jù)類(lèi)型為 int,默認(rèn)值為 1,表示指定下一個(gè)等待分發(fā)的事務(wù)。
sp_replcmds 由日志讀取器進(jìn)程使用。此過(guò)程返回有關(guān)其執(zhí)行時(shí)所在的發(fā)布數(shù)據(jù)庫(kù)的信息。它使您得以查看當(dāng)前沒(méi)有隨命令分發(fā)的事務(wù)(那些保留在事務(wù)日志中的、沒(méi)有被發(fā)送到分發(fā)服務(wù)器的事務(wù)),并且返回項(xiàng)目 ID、partial_command(真或假)、命令、頁(yè)、行和時(shí)間截。
sp_replcmds 用于事務(wù)復(fù)制。
此過(guò)程可以為所有者限定的表或未限定的表名(默認(rèn)值)生成命令。添加限定的表名允許將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)內(nèi)的特定用戶所擁有的表復(fù)制到這個(gè)用戶在另一個(gè)數(shù)據(jù)庫(kù)內(nèi)所擁有的表中。
說(shuō)明 由于源數(shù)據(jù)庫(kù)內(nèi)的表名是由所有者名稱限定的,所以目標(biāo)數(shù)據(jù)庫(kù)內(nèi)的表所有者必須具有相同的所有者名稱。
嘗試在同一數(shù)據(jù)庫(kù)內(nèi)運(yùn)行 sp_replcmds 的客戶端會(huì)收到 18752 號(hào)錯(cuò)誤,直到第一個(gè)客戶端斷開(kāi)連接為止。當(dāng)?shù)谝粋€(gè)客戶端斷開(kāi)連接后,另一個(gè)客戶端可以運(yùn)行 sp_replcmds,并成為新的日志讀取器。
說(shuō)明 應(yīng)只在解決與復(fù)制有關(guān)的問(wèn)題時(shí)才運(yùn)行 sp_replcmds 過(guò)程。
如果因?yàn)樵谕粋€(gè)事務(wù)中沒(méi)有檢索到文本指針而導(dǎo)致 sp_replcmds 無(wú)法復(fù)制文本命令,則將在 Microsoft® SQL Server™ 錯(cuò)誤日志和 Microsoft Windows NT® 應(yīng)用程序日志中添加 18759 號(hào)警告消息。
只有 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫(kù)角色成員才能執(zhí)行 sp_replcmds。
相關(guān)文章