sp_marksubscriptionvalidation (Transact-SQL)
Si applica a: SQL Server
Contrassegna la transazione aperta corrente come transazione di convalida a livello di sottoscrizione per il Sottoscrittore specificato. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_marksubscriptionvalidation
[ @publication = ] N'publication'
, [ @subscriber = ] N'subscriber'
, [ @destination_db = ] N'destination_db'
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argomenti
[ @publication = ] N'publication'
Nome della pubblicazione. @publication è sysname, senza impostazione predefinita.
[ @subscriber = ] N'subscriber'
Nome del Sottoscrittore. @subscriber è sysname, senza impostazione predefinita.
[ @destination_db = ] N'destination_db'
Nome del database di destinazione. @destination_db è sysname, senza impostazione predefinita.
[ @publisher = ] N'publisher'
Specifica un server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL
@publisher non deve essere usato per una pubblicazione appartenente a un server di pubblicazione di SQL Server.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
sp_marksubscriptionvalidation
viene usato nella replica transazionale.
sp_marksubscriptionvalidation
non supporta sottoscrittori non SQL Server.
Per i server di pubblicazione non SQL Server, non è possibile eseguire sp_marksubscriptionvalidation
dall'interno di una transazione esplicita. Ciò è dovuto al fatto che le transazioni esplicite non sono supportate tramite la connessione al server collegato usata per accedere al server di pubblicazione.
sp_marksubscriptionvalidation
deve essere utilizzato insieme a sp_article_validation, specificando un valore di 1
per @subscription_level e può essere utilizzato con altre chiamate per contrassegnare sp_marksubscriptionvalidation
la transazione aperta corrente per altri sottoscrittori.
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_marksubscriptionvalidation
.
Esempi
È possibile applicare la query seguente al database di pubblicazione per inviare comandi di convalida a livello di sottoscrizione. Tali comandi vengono quindi intercettati dagli agenti di distribuzione dei Sottoscrittori specificati. La prima transazione convalida l'articolo art1
, mentre la seconda transazione convalida art2
. Le chiamate a sp_marksubscriptionvalidation
e sp_article_validation vengono incapsulate in una transazione. È consigliabile eseguire una sola chiamata a sp_article_validation per transazione. Ciò è dovuto al fatto che sp_article_validation contiene un blocco di tabella condiviso nella tabella di origine durante la transazione. Le transazioni brevi consentono di ottenere la massima concorrenza.
BEGIN TRANSACTION;
EXEC sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub',
@destination_db = 'SubDB';
EXEC sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub2',
@destination_db = 'SubDB';
EXEC sp_article_validation @publication = 'pub1',
@article = 'art1',
@rowcount_only = 0,
@full_or_fast = 0,
@shutdown_agent = 0,
@subscription_level = 1;
COMMIT TRANSACTION;
BEGIN TRANSACTION;
EXEC sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub',
@destination_db = 'SubDB';
EXEC sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub2',
@destination_db = 'SubDB';
EXEC sp_article_validation @publication = 'pub1',
@article = 'art2',
@rowcount_only = 0,
@full_or_fast = 0,
@shutdown_agent = 0,
@subscription_level = 1;
COMMIT TRANSACTION;