sp_marksubscriptionvalidation (Transact-SQL)

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.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • [ @publication= ] 'publication'
    Nome della pubblicazione. publication è di tipo sysname e non prevede alcun valore predefinito.

  • [ @subscriber = ] 'subscriber'
    Nome del Sottoscrittore. subscriber è di tipo sysname e non prevede alcun valore predefinito.

  • [ @destination_db= ] 'destination_db'
    Nome del database di destinazione. destination_db è di tipo sysname e non prevede alcun valore predefinito.

  • [@publisher= ] 'publisher'
    Specifica un server di pubblicazione non MicrosoftSQL Server. publisher è di tipo sysname e il valore predefinito è NULL.

    [!NOTA]

    Non utilizzare publisher per una pubblicazione che appartiene a un server di pubblicazione SQL Server.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

sp_marksubscriptionvalidation viene utilizzata per la replica transazionale.

sp_marksubscriptionvalidation non supporta Sottoscrittori non SQL Server.

Per 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 utilizzata insieme a sp_article_validation (Transact-SQL), con il valore 1 per subscription_level. Inoltre, può essere utilizzata 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 del ruolo predefinito del database db_owner 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 convalida l'articolo 'art2'. Si noti inoltre che le chiamate a sp_marksubscriptionvalidation e sp_article_validation (Transact-SQL) sono state inserite in una transazione. È consigliabile inserire una sola chiamata a sp_article_validation (Transact-SQL) per transazione in quanto sp_article_validation (Transact-SQL) imposta un blocco condiviso sulla tabella di origine per l'intera 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