André Krämers Blog

Lösungen für Ihre Probleme

Genau: leuchtende Kundenaugen :-)

Diese durfte ich kürzlich wieder sehen. Einer meiner Kunden behalf sich nämlich Jahre lang mit “schmutzigen” Workarrounds um das Feuern von Update-Triggern bei Massenupdates zu vermeiden.

Glücklicherweise ist es jedoch unter dem SQL Server möglich, Trigger bedarfsweise zu deaktiveren / aktivieren.

Für alle, die mit dem selben Problem kämpfen hier zur Referenz:

    -- Trigger für Tabelle deaktiveren
    ALTER TABLE [MeineTabelle] DISABLE TRIGGER ALL
    -- Massenupdate durchführen, z. B.
    -- update MeineTabelle set Preis = Preis * 1.5
    -- Trigger wieder aktivieren
    ALTER TABLE [MeineTabelle] ENABLE TRIGGER ALL

Es gibt 1 Kommentare

Comment by F.M. aus HB
Von | 29.10.2011 21:11
Hallo Andre,das mit den triggern ist so aber nicht sauber.Schau Dir mal die IO-Stats mit aktiviertem, de-aktiviertem und entfernten Trigger an.Die IO-Last halbiert sich bei deaktiviertem Trigger und sinkt noch einmal, wenn der Trigger gar nicht vorhanden ist. Eigentlich sollte man meinen, dass ein deaktivierter Trigger = nicht vorhandener Trigger ist. Dem ist aber nicht so.Alte Weisheit bei M$: It's behaviour by design. Ansonsten ein guter Blogso longFrank