sp_replcmds (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Restituisce i comandi per le transazioni contrassegnate per la replica. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Importante

La sp_replcmds procedura deve essere eseguita solo per risolvere i problemi relativi alla replica.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_replcmds [ @maxtrans = ] maxtrans
[ ; ]

Argomenti

[ @maxtrans = ] maxtrans

Numero di transazioni su cui restituire informazioni. @maxtrans è int, con un valore predefinito , 1che specifica la transazione successiva in attesa della distribuzione.

Set di risultati

Nome colonna Tipo di dati Descrizione
article id int ID dell'articolo.
partial_command bit Indica se questo comando è un comando parziale.
command varbinary(1024) Valore del comando.
xactid binary(10) ID della transazione.
xact_seqno varbinary(16) Numero di sequenza della transazione.
publication_id int ID della pubblicazione.
command_id int ID del comando in MSrepl_commands.
command_type int Tipo di comando.
originator_srvname sysname Server in cui ha origine la transazione.
originator_db sysname Database in cui ha origine la transazione.
pkHash int Solo per uso interno.
originator_publication_id int ID della pubblicazione in cui ha origine la transazione.
originator_db_version int Versione del database in cui ha origine la transazione.
originator_lsn varbinary(16) Identifica il numero di sequenza del file di log (LSN) per il comando nella pubblicazione di origine.

Osservazioni:

sp_replcmds viene usato dal processo di lettura log nella replica transazionale.

La replica considera il primo client eseguito sp_replcmds all'interno di un determinato database come lettore di log.

Questa procedura può generare comandi per tabelle qualificate con il nome del proprietario oppure non qualifica il nome della tabella (impostazione predefinita). L'aggiunta di nomi di tabella qualificati consente di replicare i dati di tabelle di proprietà di un utente specifico di un database in tabelle di proprietà dello stesso utente in un altro database.

Poiché il nome di tabella nel database di origine è qualificato dal nome del proprietario, per la tabella del database di destinazione è necessario specificare lo stesso nome di proprietario.

I client che tentano di eseguire sp_replcmds nello stesso database ricevono l'errore 18752 fino alla disconnessione del primo client. Dopo la disconnessione del primo client, un altro client può eseguire sp_replcmdse diventa il nuovo lettore di log.

Un messaggio di avviso numero 18759 viene aggiunto sia al log degli errori di SQL Server che al log applicazioni di Microsoft Windows, se sp_replcmds non è in grado di replicare un comando di testo perché il puntatore di testo non è stato recuperato nella stessa transazione.

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o il ruolo predefinito del database db_owner possono eseguire sp_replcmds.