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;