Au lieu d'utiliser xp _ cmdshell, je l'ai fait:
Quand une certaine valeur dans une table change, le déclencheur utilise msdb.sp _ commencer _ travail pour commencer un emploi. Ce travail ne doit pas être exécuté sur un planning, uniquement lorsqu'il est initié par un utilisateur. J'ai défini l'horaire du travail pour qu'il s'exécute une fois, ce qui est maintenant le cas, et j'ai décoché la case activée.
Ce travail a une étape, qui est DTSRun/~ Z0xHEXENCRYPTEDVALUE. Le package DTS copie certaines lignes de ce serveur vers un autre serveur sur une plate-forme différente et réinitialise les valeurs dans la table avec le déclencheur pour la prochaine fois. Le déclencheur vérifie une valeur de table avant d'appeler le travail _ start _, afin que le travail ne démarre que dans certaines conditions, pas toujours.
Depuis que le travail _ commence _ s'exécute de manière asynchrone, le déclencheur se termine rapidement. Le seul inconvénient à cela est que je dois interroger la valeur qui a été réinitialisée en cas de succès et soit laisser l'utilisateur savoir que cela a fonctionné, ou après un certain délai, cela n'a pas fonctionné. L'alternative serait d'utiliser xp_cmdshell si j'avais besoin d'une opération synchrone, ce qui pourrait ne pas être une bonne idée de l'intérieur d'un trigger.