Discussion:
Trigger temporär deaktivieren (auskommentieren)
(zu alt für eine Antwort)
HVo
2006-01-24 12:46:56 UTC
Permalink
Hallo NG,

ich stehe vor einer Herrausforderung, daß ich ca. 30 Trigger in
unregelmäßigen Abständen
immer "deaktivieren" muß um ein Datenbankupdate laufen lassen zu können.
Nach dem
Update muß ich die Trigger wieder "aktivieren"

z.Zt. gehe ich jeden Trigger durch, kommentiere ihn bis auf den declare
Bereich aus, um
ihn dan wieder einzukommentieren :(

Das macht kein Spaß und ich suche jetzt eine art sql statement welches dies
für mich macht.
mit drop trigger komme ich auch nicht weit, da ich dann die ganzen trigger
immer auf dem
neusten stand in z.b. einer textdatei haben muß.

wenn jemand einen befehl oder eine einfache variante zum "deaktivieren" und
"aktivieren"
hat möge er bitte posten ;)

Vielen dank
Euer Roland
Daniel Jansen
2006-01-24 12:55:01 UTC
Permalink
Hi Roland,

Probiers mal mit:

enable trigger
ENABLE Trigger Person.uAddress ON Person.Address;

resp.

disable trigger
DISABLE TRIGGER Person.uAddress ON Person.Address;

http://msdn2.microsoft.com/de-de/ms182706.aspx

Gruß
Daniel
Post by HVo
Hallo NG,
ich stehe vor einer Herrausforderung, daß ich ca. 30 Trigger in
unregelmäßigen Abständen
immer "deaktivieren" muß um ein Datenbankupdate laufen lassen zu können.
Nach dem
Update muß ich die Trigger wieder "aktivieren"
z.Zt. gehe ich jeden Trigger durch, kommentiere ihn bis auf den declare
Bereich aus, um
ihn dan wieder einzukommentieren :(
Das macht kein Spaß und ich suche jetzt eine art sql statement welches
dies für mich macht.
mit drop trigger komme ich auch nicht weit, da ich dann die ganzen trigger
immer auf dem
neusten stand in z.b. einer textdatei haben muß.
wenn jemand einen befehl oder eine einfache variante zum "deaktivieren"
und "aktivieren"
hat möge er bitte posten ;)
Vielen dank
Euer Roland
Tanja Dunker
2006-01-24 12:58:10 UTC
Permalink
Hi Roland!

Versuchs mal mit

ALTER TABLE TabellenName
DISABLE bzw. ENABLE TRIGGER Triggername bzw. ALL

S. Online-Hilfe

HTH

Tanja
Post by HVo
Hallo NG,
ich stehe vor einer Herrausforderung, daß ich ca. 30 Trigger in
unregelmäßigen Abständen
immer "deaktivieren" muß um ein Datenbankupdate laufen lassen zu können.
Nach dem
Update muß ich die Trigger wieder "aktivieren"
z.Zt. gehe ich jeden Trigger durch, kommentiere ihn bis auf den declare
Bereich aus, um
ihn dan wieder einzukommentieren :(
Das macht kein Spaß und ich suche jetzt eine art sql statement welches
dies für mich macht.
mit drop trigger komme ich auch nicht weit, da ich dann die ganzen trigger
immer auf dem
neusten stand in z.b. einer textdatei haben muß.
wenn jemand einen befehl oder eine einfache variante zum "deaktivieren"
und "aktivieren"
hat möge er bitte posten ;)
Vielen dank
Euer Roland
HVo
2006-01-24 13:40:06 UTC
Permalink
Hi Tanja,

vielen Danke!!! es hat geklappt.

Hier meine Lösung noch:

DECLARE @SQL AS VARCHAR(1000)
DECLARE @TriggerTable AS VARCHAR(1000)
DECLARE @TriggerName AS VARCHAR(1000)

DECLARE cur CURSOR FOR SELECT sysobjects.name AS TriggerName, tTable.name AS
TriggerTable FROM sysobjects INNER JOIN sysobjects AS tTable on
sysobjects.parent_obj = tTable.id WHERE sysobjects.xType = 'TR' AND
sysobjects.name LIKE '%ava%'
OPEN cur

FETCH NEXT FROM cur INTO @TriggerName, @TriggerTable

WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'ALTER TABLE ' + @TriggerTable + ' DISABLE TRIGGER ' +
@TriggerName
EXECUTE (@SQL)

FETCH NEXT FROM cur INTO @TriggerName, @TriggerTable
END

CLOSE cur
DEALLOCATE cur
Post by Tanja Dunker
Hi Roland!
Versuchs mal mit
ALTER TABLE TabellenName
DISABLE bzw. ENABLE TRIGGER Triggername bzw. ALL
S. Online-Hilfe
HTH
Tanja
Post by HVo
Hallo NG,
ich stehe vor einer Herrausforderung, daß ich ca. 30 Trigger in
unregelmäßigen Abständen
immer "deaktivieren" muß um ein Datenbankupdate laufen lassen zu können.
Nach dem
Update muß ich die Trigger wieder "aktivieren"
z.Zt. gehe ich jeden Trigger durch, kommentiere ihn bis auf den declare
Bereich aus, um
ihn dan wieder einzukommentieren :(
Das macht kein Spaß und ich suche jetzt eine art sql statement welches
dies für mich macht.
mit drop trigger komme ich auch nicht weit, da ich dann die ganzen
trigger immer auf dem
neusten stand in z.b. einer textdatei haben muß.
wenn jemand einen befehl oder eine einfache variante zum "deaktivieren"
und "aktivieren"
hat möge er bitte posten ;)
Vielen dank
Euer Roland
Frank Kalis
2006-01-24 13:38:05 UTC
Permalink
Post by HVo
ich stehe vor einer Herrausforderung, daß ich ca. 30 Trigger in
unregelmäßigen Abständen
immer "deaktivieren" muß um ein Datenbankupdate laufen lassen zu können.
Nach dem
Update muß ich die Trigger wieder "aktivieren"
http://www.insidesql.de/content/view/25/3/

Falls du nicht die undokumentierte sp_MSForEachTable Prozedur verwenden
willst, kannst du das auch in einer Schleife machen.
--
Frank Kalis
Microsoft SQL Server MVP
http://www.insidesql.de
Heute schon gebloggt? http://www.insidesql.de/blogs
HVo
2006-01-24 13:46:15 UTC
Permalink
Hi Frank und vielen Dank!

Ich muß leider nur bestimmte Trigger deaktivieren von daher habe ich mir
eine kleine Schleife
zusammen gesetzt (siehe Eintrag Tanja)

Danke trotzdem!!!
Gruß
Roland
Post by Frank Kalis
Post by HVo
ich stehe vor einer Herrausforderung, daß ich ca. 30 Trigger in
unregelmäßigen Abständen
immer "deaktivieren" muß um ein Datenbankupdate laufen lassen zu können.
Nach dem
Update muß ich die Trigger wieder "aktivieren"
http://www.insidesql.de/content/view/25/3/
Falls du nicht die undokumentierte sp_MSForEachTable Prozedur verwenden
willst, kannst du das auch in einer Schleife machen.
--
Frank Kalis
Microsoft SQL Server MVP
http://www.insidesql.de
Heute schon gebloggt? http://www.insidesql.de/blogs
Loading...