Dans notre base de données en direct/production, j'essaie d'ajouter un déclencheur à une table, mais cela a échoué. J'ai essayé plusieurs fois, mais il a fallu plus de 30 minutes pour que l'instruction create trigger se termine et je l'ai annulée.CREATE TRIGGER prend plus de 30 minutes sur SQL Server 2005
La table est une table qui est souvent lue/écrite par plusieurs processus différents. J'ai désactivé les tâches planifiées qui mettent à jour la table et j'ai essayé à des moments où il y a moins d'activité sur la table, mais je ne suis pas capable d'arrêter tout ce qui accède à la table.
Je ne crois pas qu'il y ait un problème avec l'instruction create trigger elle-même. L'instruction create trigger a été réussie et rapide dans un environnement de test, et le déclencheur fonctionne correctement lorsque des lignes sont insérées/mises à jour dans la table. Bien que lorsque j'ai créé le déclencheur sur la base de données de test, il n'y avait pas de charge sur la table et il y avait beaucoup moins de lignes, ce qui est différent de la base de données live/production (100 vs 13,000,000+).
Voici la create déclencheur que je suis en train de courir
CREATE TRIGGER [OnItem_Updated]
ON [Item]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF update(State)
BEGIN
/* do some stuff including for each row updated call a stored
procedure that increments a value in table based on the
UserId of the updated row */
END
END
Peut-il y avoir des problèmes avec la création d'un déclencheur sur une table tandis que les lignes sont mises à jour ou si elle a plusieurs lignes?
Dans SQL Server, les déclencheurs sont créés activés par défaut. Est-il possible de créer le déclencheur désactivé par défaut?
D'autres idées?
L'exécution de la fonction sp_who pendant l'exécution de l'instruction de création de trigger m'a aidé à résoudre le problème. Il y avait une ancienne session d'un autre serveur qui était suspendu alors qu'il avait un verrou de stabilité de schéma sur la table, ce qui explique pourquoi je ne pouvais pas créer le déclencheur. –