sp_marksubscriptionvalidation (Transact-SQL)

S’applique à :SQL Server

Marque la transaction actuellement ouverte comme transaction de validation de niveau abonnement pour l'abonné spécifié. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @publication = ] 'publication' Nom de la composition. publication est sysname, sans valeur par défaut.

[ @subscriber = ] 'subscriber' Nom de l’Abonné. l’abonné est sysname, sans valeur par défaut.

[ @destination_db = ] 'destination_db' Nom de la base de données de destination. destination_db est sysname, sans valeur par défaut.

[ @publisher = ] 'publisher'Spécifie un serveur de publication non-Microsoft SQL Server. publisher est sysname, avec une valeur par défaut NULL.

Notes

publisher ne doit pas être utilisé pour une publication qui appartient à un SQL Server Publisher.

Codet de retour

0 (réussite) ou 1 (échec)

Remarques

sp_marksubscriptionvalidation est utilisé dans la réplication transactionnelle.

sp_marksubscriptionvalidation ne prend pas en charge les Abonnés non SQL Server.

Pour les éditeurs non SQL Server, vous ne pouvez pas exécuter sp_marksubscriptionvalidation à partir d’une transaction explicite. Cela est dû au fait que les transactions explicites ne sont pas prises en charge sur la connexion du serveur lié utilisée pour accéder au serveur de publication.

sp_marksubscriptionvalidation doit être utilisé avec sp_article_validation (Transact-SQL), en spécifiant la valeur 1 pour subscription_level, et peut être utilisé avec d’autres appels à sp_marksubscriptionvalidation pour marquer la transaction ouverte actuelle pour d’autres abonnés.

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent exécuter sp_marksubscriptionvalidation.

Exemple

La requête suivante peut être appliquée à la base de données de publication pour publier des commandes de validation au niveau des abonnements. Ces commandes sont récupérées par les Agents de distribution des Abonnés spécifiés. Notez que la première transaction valide l’article « art1 », tandis que la deuxième transaction valide « art2 ». Notez également que les appels à sp_marksubscriptionvalidation et sp_article_validation (Transact-SQL) ont été encapsulés dans une transaction. Nous recommandons un seul appel à sp_article_validation (Transact-SQL) par transaction. Cela est dû au fait que sp_article_validation (Transact-SQL) contient un verrou de table partagé sur la table source pendant la durée de la transaction. Les transactions courtes sont à privilégier pour maximiser l'accès simultané.

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  

Voir aussi

Procédures stockées système (Transact-SQL)
Valider des données répliquées