sp_check_for_sync_trigger (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Détermine si un déclencheur ou une procédure stockée définis par l'utilisateur sont appelés dans le contexte d'un déclencheur de réplication utilisé pour les abonnements avec mise à jour immédiate. Cette procédure stockée est exécutée sur le serveur de publication sur la base de données de publication ou sur l’Abonné sur la base de données d’abonnement.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_check_for_sync_trigger [ @tabid = ] 'tabid'   
    [ , [ @trigger_op = ] 'trigger_output_parameters' OUTPUT ]  
    [ , [ @fonpublisher = ] fonpublisher ]  

Arguments

[@tabid = ] 'tabid'
ID d'objet de la table dans laquelle les déclencheurs de mise à jour immédiate sont recherchés. tabid est int sans valeur par défaut.

[@trigger_op = ] SORTIE « trigger_output_parameters »
Spécifie si le paramètre de sortie doit renvoyer le type du déclencheur à partir duquel il est appelé. trigger_output_parameters est char(10) et peut être l’une de ces valeurs.

Valeur Description
Ins Déclencheur INSERT.
Upd Déclencheur UPDATE.
Suppr Déclencheur DELETE.
NULL (par défaut)

[ @fonpublisher = ] fonpublisher Spécifie l’emplacement où la procédure stockée est exécutée. fonpublisher est bit, avec une valeur par défaut de 0. Si la valeur est 0, l'exécution s'effectue sur l'Abonné et, si la valeur est 1, l'exécution s'effectue sur le serveur de publication.

Codet de retour

0 indique que la procédure stockée n'est pas appelée dans le contexte d'un déclencheur de mise à jour immédiate. 1 indique qu’il est appelé dans le contexte d’un déclencheur de mise à jour immédiate et est le type de déclencheur retourné dans @trigger_op.

Notes

sp_check_for_sync_trigger est utilisé dans la réplication instantané et la réplication transactionnelle.

sp_check_for_sync_trigger est utilisé pour coordonner la réplication et les déclencheurs définis par l’utilisateur. Cette procédure stockée détermine si elle est appelée dans le contexte d'un déclencheur de réplication. Par exemple, vous pouvez appeler la procédure sp_check_for_sync_trigger dans le corps d’un déclencheur défini par l’utilisateur. Si sp_check_for_sync_trigger retourne 0, le déclencheur défini par l’utilisateur continue le traitement. Si sp_check_for_sync_trigger retourne 1, le déclencheur défini par l’utilisateur se ferme. Vous êtes ainsi assuré que le déclencheur défini par l'utilisateur ne s'active pas lorsque le déclencheur de réplication met à jour la table.

Exemples

R. Ajouter du code à un déclencheur sur une table Abonné

L'exemple suivant contient du code que vous pouvez utiliser dans un déclencheur appliqué à une table de l'Abonné.

DECLARE @retcode int, @trigger_op char(10), @table_id int  
SELECT @table_id = object_id('tablename')  
EXEC @retcode = sp_check_for_sync_trigger @table_id, @trigger_op OUTPUT  
IF @retcode = 1  
RETURN  

B. Ajouter du code à un déclencheur sur une table de serveur de publication

Le code peut également être ajouté à un déclencheur sur une table sur le serveur de publication ; le code est similaire, mais l’appel à sp_check_for_sync_trigger inclut un paramètre supplémentaire.

DECLARE @retcode int, @trigger_op char(10), @table_id int, @fonpublisher int  
SELECT @table_id = object_id('tablename')  
SELECT @fonpublisher = 1  
EXEC @retcode = sp_check_for_sync_trigger @table_id, @trigger_op OUTPUT, @fonpublisher  
IF @retcode = 1  
RETURN  

Autorisations

sp_check_for_sync_trigger procédure stockée peut être exécutée par n’importe quel utilisateur disposant d’autorisations SELECT dans la vue système sys.objects .

Voir aussi

Updatable Subscriptions for Transactional Replication