sp_replcmds (Transact-SQL)
Mit dieser Prozedur werden die Transaktionsbefehle zurückgegeben, die für die Replikation gekennzeichnet sind. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.
![]() |
---|
sp_replcmds sollte nur zur Problembehandlung bei der Replikation ausgeführt werden. |
Syntax
sp_replcmds [ @maxtrans = ] maxtrans
Argumente
- [ @maxtrans=] maxtrans
Die Anzahl von Transaktionen, für die Informationen zurückgegeben werden sollen. maxtrans ist vom Datentyp int. Der Standardwert ist 1, womit die nächste Transaktion angegeben wird, die auf die Verteilung wartet.
Resultsets
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
article id |
int |
Die ID des Artikels |
partial_command |
bit |
Zeigt an, ob dies ein Teilbefehl ist oder nicht |
command |
varbinary(1024) |
Der Befehlswert |
xactid |
binary(10) |
Transaktions-ID |
xact_seqno |
varbinary(16) |
Die Transaktionssequenznummer |
publication_id |
int |
Die ID der Veröffentlichung |
command_id |
int |
ID des Befehls in MSrepl_commands. |
command_type |
int |
Befehlstyp |
originator_srvname |
sysname |
Server, von dem die Transaktion stammt |
originator_db |
sysname |
Datenbank, von der die Transaktion stammt |
pkHash |
int |
Nur interne Verwendung |
originator_publication_id |
int |
ID der Veröffentlichung, von der die Transaktion stammt |
originator_db_version |
int |
Version der Datenbank, von der die Transaktion stammt |
originator_lsn |
varbinary(16) |
Identifiziert die Protokollfolgenummer (LSN, Log Sequence Number) für den Befehl in der ursprünglichen Veröffentlichung |
Hinweise
sp_replcmds wird vom Protokollleseprozess bei der Transaktionsreplikation verwendet.
Die Replikation behandelt den ersten Client, der sp_replcmds in einer bestimmten Datenbank ausführt, als Protokollleser.
Diese Prozedur kann Befehle für mit dem Besitzer qualifizierte Tabellen erstellen oder den Tabellennamen nicht kennzeichnen (Standard). Das Hinzufügen von qualifizierten Tabellennamen ermöglicht die Datenreplikation von Tabellen mit einem bestimmten Besitzer innerhalb einer Datenbank zu Tabellen mit demselben Besitzer in einer anderen Datenbank.
![]() |
---|
Da der Tabellenname in der Quelldatenbank durch den Besitzernamen qualifiziert wird, muss es sich bei dem Tabellenbesitzer in der Zieldatenbank um den gleichen Besitzernamen handeln. |
Clients, die versuchen, sp_replcmds für dieselbe Datenbank auszuführen, erhalten so lange die Fehlermeldung 18752, bis der erste Client die Verbindung trennt. Nachdem die Verbindung getrennt wurde, kann ein anderer Client sp_replcmds ausführen und wird dann seinerseits zum neuen Protokollleser.
Die Fehlermeldungsnummer 18759 wird sowohl dem Microsoft SQL Server-Fehlerprotokoll als auch dem Microsoft Windows-Anwendungsprotokoll hinzugefügt, wenn sp_replcmds einen Textbefehl nicht replizieren kann, da der Textzeiger nicht in der gleichen Transaktion abgerufen wurde.
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_replcmds ausführen.