sp_check_for_sync_trigger (Transact-SQL)

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 mis à jour immédiatement. Cette procédure stockée est exécutée sur la base de données de publication du serveur de publication ou sur la base de données d'abonnement de l'abonné.

Icône Lien de rubriqueConventions de la syntaxe de 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 de type int, sans valeur par défaut.

  • [@trigger_op = ] 'trigger_output_parameters' OUTPUT
    Spécifie si le paramètre de sortie doit renvoyer le type du déclencheur à partir duquel il est appelé. trigger_output_parameters est de type char(10) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    Ins

    Déclencheur INSERT.

    Upd

    Déclencheur UPDATE.

    Del

    Déclencheur DELETE.

    NULL (valeur par défaut)

  • [ @fonpublisher = ] fonpublisher
    Spécifie l'emplacement où la procédure stockée est exécutée. fonpublisher est de type bit, avec 0 comme valeur par défaut. 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.

Valeurs des codes renvoyés

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 que la procédure stockée est appelée dans le contexte d'un déclencheur de mise à jour immédiate et qu'il s'agit du type de déclencheur retourné dans @trigger\_op.

Notes

La procédure sp_check_for_sync_trigger est utilisée lors d'une réplication transactionnelle et d'une réplication de capture instantanée.

La procédure sp_check_for_sync_trigger permet de coordonner les déclencheurs de réplication et ceux 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 la valeur 0, le déclencheur défini par l'utilisateur continue le traitement. Si sp_check_for_sync_trigger retourne la valeur 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.

Exemple

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

Ce code peut également être ajouté à un déclencheur appliqué à une table du serveur de publication ; le code est similaire, mais l'appel de la procédure stockée sp_check_for_sync_trigger comprend 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

La procédure stockée sp_check_for_sync_trigger peut être exécutée par les utilisateurs bénéficiant d'autorisations SELECT dans la vue système sys.objects.