sp_marksubscriptionvalidation (Transact-SQL)
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 au niveau du serveur de publication dans la base de données de publication.
Conventions de la syntaxe de Transact-SQL
Syntaxe
sp_marksubscriptionvalidation [ @publication = ] 'publication'
, [ @subscriber = ] 'subscriber'
, [ @destination_db = ] 'destination_db'
[ , [ @publisher = ] 'publisher' ]
Arguments
[ @publication= ] 'publication'
Nom de la publication. publication est de type sysname, sans valeur par défaut.[ @subscriber= ] 'subscriber'
Nom de l'abonné. subscriber est de type sysname, sans valeur par défaut.[ @destination_db=] 'destination_db'
Nom de la base de données de destination. destination_db est de type sysname, sans valeur par défaut.[ @publisher= ] 'publisher'
Spécifie un serveur de publication non Microsoft SQL Server. publisher est de type sysname, avec NULL comme valeur par défaut.[!REMARQUE]
Il est déconseillé d'utiliser publisher pour une publication appartenant à un serveur de publication SQL Server.
Valeurs des codes de retour
0 (succès) ou 1 (échec)
Notes
sp_marksubscriptionvalidation est utilisée dans la réplication transactionnelle.
sp_marksubscriptionvalidation ne prend pas en charge les Abonnés non-SQL Server.
Pour les Abonnés 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 une valeur de 1 pour subscription_level. Elle peut être utilisée avec d'autres appels à sp_marksubscriptionvalidation pour marquer la transaction actuelle ouverte pour d'autres abonnés.
Autorisations
Seuls les membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter la procédure 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. Remarquez que la première transaction valide l'article 'art1' tandis que la seconde transaction valide 'art2'. Il est également intéressant de remarquer que les appels vers sp_marksubscriptionvalidation et sp_article_validation (Transact-SQL) ont été encapsulés dans une transaction. Un seul appel par transaction vers sp_article_validation (Transact-SQL) est recommandé dans la mesure où sp_article_validation (Transact-SQL) maintient en place, le temps de la transaction, un verrou de table partagé sur la table source. 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
Référence
Procédures stockées système (Transact-SQL)