sp_marksubscriptionvalidation (Transact-SQL)sp_marksubscriptionvalidation (Transact-SQL)

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Marque la transaction actuellement ouverte comme transaction de validation de niveau abonnement pour l'abonné spécifié.Marks the current open transaction to be a subscription-level validation transaction for the specified subscriber. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.This stored procedure is executed at the Publisher on the publication database.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

[ @publication = ] 'publication' Est le nom de la publication.[ @publication = ] 'publication' Is the name of the publication. publication est sysname, sans valeur par défaut.publication is sysname, with no default.

[ @subscriber = ] 'subscriber' Est le nom de l’abonné.[ @subscriber = ] 'subscriber' Is the name of the Subscriber. abonné est de type sysname, sans valeur par défaut.subscriber is sysname, with no default.

[ @destination_db = ] 'destination_db' Est le nom de la base de données de destination.[ @destination_db = ] 'destination_db' Is the name of the destination database. destination_db est sysname, sans valeur par défaut.destination_db is sysname, with no default.

[ @publisher = ] 'publisher' Spécifie un non - MicrosoftMicrosoft SQL ServerSQL Server serveur de publication.[ @publisher = ] 'publisher' Specifies a non- MicrosoftMicrosoft SQL ServerSQL Server Publisher. serveur de publication est sysname, avec NULL comme valeur par défaut.publisher is sysname, with a default of NULL.

Notes

serveur de publication ne doit pas être utilisé pour une publication qui appartienne à un SQL ServerSQL Server serveur de publication.publisher should not be used for a publication that belongs to a SQL ServerSQL Server Publisher.

Valeurs des codes de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_marksubscriptionvalidation est utilisé dans la réplication transactionnelle.sp_marksubscriptionvalidation is used in transactional replication.

sp_marksubscriptionvalidation ne prend pas en charge non - SQL ServerSQL Server abonnés.sp_marksubscriptionvalidation does not support non- SQL ServerSQL Server Subscribers.

Pour les non - SQL ServerSQL Server les serveurs de publication, vous ne pouvez pas exécuter sp_marksubscriptionvalidation à partir d’une transaction explicite.For non- SQL ServerSQL Server Publishers, you cannot execute sp_marksubscriptionvalidation from within an explicit transaction. 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.This is because explicit transactions are not supported over the linked server connection used to access the Publisher.

sp_marksubscriptionvalidation doit être utilisé conjointement avec sp_article_validation (Transact-SQL), en spécifiant la valeur de 1 pour subscription_levelet peut être utilisé avec d’autres appels à sp_marksubscriptionvalidation pour marquer la transaction actuellement ouverte pour d’autres abonnés.sp_marksubscriptionvalidation must be used together with sp_article_validation (Transact-SQL), specifying a value of 1 for subscription_level, and can be used with other calls to sp_marksubscriptionvalidation to mark the current open transaction for other subscribers.

AutorisationsPermissions

Seuls les membres de la sysadmin rôle serveur fixe ou db_owner rôle de base de données fixe peuvent exécuter sp_marksubscriptionvalidation.Only members of the sysadmin fixed server role or db_owner fixed database role can execute sp_marksubscriptionvalidation.

ExempleExample

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.The following query can be applied to the publishing database to post subscription-level validation commands. Ces commandes sont récupérées par les Agents de distribution des Abonnés spécifiés.These commands are picked up by the Distribution Agents of specified Subscribers. Notez que la première transaction valide l’article 'art1', tandis que la deuxième transaction valide'art2».Note that the first transaction validates article 'art1', while the second transaction validates 'art2'. Notez également que les appels à sp_marksubscriptionvalidation et sp_article_validation (Transact-SQL) ont été encapsulés dans une transaction.Also note that the calls to sp_marksubscriptionvalidation and sp_article_validation (Transact-SQL) have been encapsulated in a transaction. Nous ne recommandons qu’un seul appel à sp_article_validation (Transact-SQL) par transaction.We recommend only one call to sp_article_validation (Transact-SQL) per transaction. Il s’agit, car sp_article_validation (Transact-SQL) détient un verrou de table partagé sur la table source pour la durée de la transaction.This is because sp_article_validation (Transact-SQL) holds a shared table lock on the source table for the duration of the transaction. Les transactions courtes sont à privilégier pour maximiser l'accès simultané.You should keep the transaction short to maximize concurrency.

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 aussiSee Also

Procédures stockées système (Transact-SQL) System Stored Procedures (Transact-SQL)
Valider des données répliquéesValidate Replicated Data