2010-01-11 6 views
0

Je dois faire ceci à partir d'une application Web ASP.NET:Désactiver le déclenchement se bloque?

Alter Table Contacts Disable Trigger All 
-- Do some stuff 
Alter Table Contacts Enable Trigger All 

Dans certaines situations, les blocages de déclaration Disable Trigger. Où devrais-je commencer à chercher à comprendre ce qui cause cela? Si je redémarre SQL Server, il revient à se comporter normalement.

Répondre

3

Regardez dans le moniteur d'activité à partir de SSMS pour voir pourquoi il bloque. Ou vous pouvez regarder dans la colonne blocking_session_id est sys.dm_exec_requests. Ma supposition: les changements de schéma nécessitent un verrou de modification de schéma sur la table. Toute opération (comme SELECT, UPDATE, etc.) placera un verrou de stabilité de schéma sur la table, bloquant tout ALTER jusqu'à la fin du SELECT. Donc le Disable Trigger ALTER est bloqué par toute l'instruction d'accès à la table en attente (SELECT).

+0

Merci de m'indiquer dans la bonne direction. J'ai utilisé SQL Profiler pour voir ce qui se passait et vous aviez absolument raison. FWIW: Le code ci-dessus était à l'intérieur d'une boucle à travers un LINQ à SQL IEnumerable. Si j'exécute la requête en premier et que j'obtiens les résultats (avec .ToList), puis que je parcours la liste, tout va bien. –