Partage via


sp_check_for_sync_trigger (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Détermine si un déclencheur défini par l’utilisateur ou une procédure stockée est appelé dans le contexte d’un déclencheur de réplication, qui est utilisé pour la mise à jour immédiate des abonnements. 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_op' OUTPUT ]
    [ , [ @fonpublisher = ] fonpublisher ]
[ ; ]

Arguments

[ @tabid = ] tabid

ID d’objet de la table à vérifier pour les déclencheurs de mise à jour immédiate. @tabid est int, sans valeur par défaut.

[ @trigger_op = ] SORTIE 'trigger_op'

Spécifie si le paramètre de sortie doit retourner le type de déclencheur à partir duquel il est appelé. @trigger_op est un paramètre OUTPUT de type char(10) et peut être l’une de ces valeurs.

Valeur Description
Ins INSERT gâchette
Upd UPDATE gâchette
Del DELETE gâchette
NULL (valeur par défaut)

[ @fonpublisher = ] fonpublisher

Spécifie l'emplacement où la procédure stockée est exécutée. @fonpublisher est bit, avec la valeur par défaut 0.

  • Si 0, l’exécution se trouve sur l’Abonné.
  • Si 1, l’exécution se trouve sur le serveur de publication.

Valeurs des codes 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 d’instantanés et la réplication transactionnelle.

sp_check_for_sync_trigger est utilisé pour coordonner entre les déclencheurs de réplication et 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 elle est retournée 0, le déclencheur défini par l’utilisateur continue de traiter. Si sp_check_for_sync_trigger elle est retournée 1, le déclencheur défini par l’utilisateur se ferme. Cela garantit que le déclencheur défini par l’utilisateur ne se déclenche 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 Publisher

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 inclure 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

Tout utilisateur disposant SELECT d’autorisations dans la vue système sys.objects peut s’exécutersp_check_for_sync_trigger.