2010-07-03 1 views
0

Je prévois d'implémenter des déclencheurs sur toutes mes instructions DML pour la gestion des journaux. Alors s'il vous plaît identifier s'il y a un problème ou des inconvénients à le faire.Identifier certains des inconvénients de l'implémentation de SQL Server triggers?

+0

Quels types d'inconvénients recherchez-vous? Performance? Maintenabilité? Autre? – Oded

+0

Fondamentalement, je suis inquiet au sujet de la charge, car l'application a une base de données centralisée et près de 100 sites basés sur CMS seront en cours d'exécution. –

Répondre

4

Je pense que ce blog MVP SQL Server post résume le mieux:

  • Triggers sont difficiles à trouver dans SSMS
  • exécution de déclenchement ne peut pas être vu par l'application client
  • La logique de déclenchement peut être difficile à piste
  • Les Héritiers de votre code pourrait ne pas réaliser les déclencheurs ont été mis en œuvre
  • Triggers sont connus pour inhiber performances

Brent Ozar appelle également les déclencheurs comme son # 10 délinquant dans The Top Ten Developer Mistakes That Won't Scale

Mais dans le esprit d'être équilibré, ce blog en énumère quelques-uns benefits:

  • Capacité d'appliquer plus compliqué logique métier
  • peut utiliser comme d'autres moyens pour tirer une tâche planifiée
  • Utile pour vérifier tout changement dans une table , quelle que soit la façon dont il est arrivé (à savoir procédure stockée, client application, requête ad hoc)
3

Vous doit utiliser try/catch afin que leur comportement est plus logique

C'est, ils seront par ailleurs annuler votre lot et les instructions suivantes ne sont pas exécutés (après un INSERT dire que est annulée dans la gâchette) . Bien que vous vous attendiez à cela en cas d'échec, cela peut être douloureux. Cependant, TRY/CATCh

Sinon, ils peuvent attraper les gens, par exemple, quand vous essayez de faire un chargement en vrac et oubliez qu'ils sont là. Mais ce sont des fonctionnalités SQL parfaitement valides qui peuvent être utilisées de manière appropriée.

Un autre gotcha est où un idiot veut envoyer des emails par ligne dans un déclencheur ou sinon faire une boucle ou un tel muppetry.

Et le lien omniprésent pour Erland Sommarskog's article on error handling

Questions connexes