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 di sintassi Transact-SQL

Sintassi

  
sp_marksubscriptionvalidation [ @publication = ] 'publication'  
        , [ @subscriber = ] 'subscriber'  
        , [ @destination_db = ] 'destination_db'  
    [ , [ @publisher = ] 'publisher' ]  

Argomenti

[ @publication = ] 'publication' Nome della pubblicazione. publication è sysname, senza impostazione predefinita.

[ @subscriber = ] 'subscriber' Nome del Sottoscrittore. subscriber è sysname, senza impostazione predefinita.

[ @destination_db = ] 'destination_db' Nome del database di destinazione. destination_db è sysname, senza impostazione predefinita.

[ @publisher = ] 'publisher' Specifica un server di pubblicazione non Microsoft SQL Server. publisher è sysname, con valore predefinito NULL.

Nota

Non utilizzare publisher 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 di SQL Server.

Per i server di pubblicazione non SQL Server, non è possibile eseguire sp_marksubscriptionvalidation dall'interno di una transazione esplicita. perché le transazioni esplicite non sono supportate attraverso la connessione al server collegato utilizzata per l'accesso al server di pubblicazione.

sp_marksubscriptionvalidation deve essere usato insieme a sp_article_validation (Transact-SQL), specificando il valore 1 per subscription_level e può essere usato con altre chiamate a sp_marksubscriptionvalidation per contrassegnare 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.

Esempio

È 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. Si noti che la prima transazione convalida l'articolo 'art1', mentre la seconda transazione convalida 'art2'. Si noti anche che le chiamate a sp_marksubscriptionvalidation e sp_article_validation (Transact-SQL) sono state incapsulate in una transazione. È consigliabile eseguire una sola chiamata a sp_article_validation (Transact-SQL) per transazione. Ciò è dovuto al fatto che sp_article_validation (Transact-SQL) contiene un blocco di tabella condiviso nella tabella di origine per la durata della transazione. Le transazioni brevi consentono di ottenere la massima concorrenza.

begin tran  
  
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 tran  
  
begin tran  
  
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 tran  

Vedi anche

Stored procedure di sistema (Transact-SQL)
Convalidare i dati replicati