Delen via


sp_replcmds (Transact-SQL)

van toepassing op:SQL ServerAzure SQL Managed Instance

Retourneert de opdrachten voor transacties die zijn gemarkeerd voor replicatie. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.

Belangrijk

De sp_replcmds procedure mag alleen worden uitgevoerd om problemen met replicatie op te lossen.

Transact-SQL syntaxisconventies

Syntaxis

sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]

Argumenten

Belangrijk

Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.

[ @maxtrans = ] maxtrans-

Het aantal transacties waarover informatie moet worden geretourneerd. @maxtrans is int, met een standaardwaarde van 1, waarmee de volgende transactie wordt opgegeven die wacht op distributie.

Resultatenset

Kolomnaam Gegevenstype Beschrijving
article id De id van het artikel.
partial_command bit Geeft aan of deze opdracht een gedeeltelijke opdracht is.
command varbinary(1024) De opdrachtwaarde.
xactid binary(10) Transactie-id.
xact_seqno varbinary(16) Het transactiereeksnummer.
publication_id De id van de publicatie.
command_id Id van de opdracht in MSrepl_commands.
command_type Type opdracht.
originator_srvname sysname- Server waar de transactie afkomstig is.
originator_db sysname- Database waar de transactie vandaan komt.
pkHash Alleen intern gebruik.
originator_publication_id Id van de publicatie waarvan de transactie afkomstig is.
originator_db_version Versie van de database waarvan de transactie afkomstig is.
originator_lsn varbinary(16) Identificeert het logboekreeksnummer (LSN) voor de opdracht in de oorspronkelijke publicatie.

Opmerkingen

sp_replcmds wordt gebruikt door het logboeklezerproces in transactionele replicatie.

Replicatie behandelt de eerste client die sp_replcmds in een bepaalde database uitvoert als de logboeklezer.

Met deze procedure kunt u opdrachten genereren voor door de eigenaar gekwalificeerde tabellen of de tabelnaam (de standaardinstelling) niet kwalificeren. Door gekwalificeerde tabelnamen toe te voegen, kunnen gegevens uit tabellen die eigendom zijn van een specifieke gebruiker in de ene database, replicatie mogelijk maken van tabellen die eigendom zijn van dezelfde gebruiker in een andere database.

Omdat de tabelnaam in de brondatabase wordt gekwalificeerd door de naam van de eigenaar, moet de eigenaar van de tabel in de doeldatabase dezelfde naam van de eigenaar hebben.

Clients die proberen sp_replcmds uit te voeren in dezelfde database, krijgen fout 18752 totdat de eerste client wordt verbroken. Nadat de eerste verbinding met de client is verbroken, kan een andere client sp_replcmdsuitvoeren en wordt deze de nieuwe logboeklezer.

Er wordt een waarschuwingsberichtnummer 18759 toegevoegd aan zowel het SQL Server-foutenlogboek als het Microsoft Windows-toepassingslogboek, als sp_replcmds geen tekstopdracht kan repliceren omdat de tekstpointer niet is opgehaald in dezelfde transactie.

Machtigingen

Alleen leden van de sysadmin vaste serverfunctie of de db_owner vaste databaserol kunnen sp_replcmdsuitvoeren.