Trigger deaktivieren/aktivieren - DB muss neu gestartet werden

StehtimSchilf

New Member
Hi Forum

Ich muss eine Datenaktualisierungen auf einer Tabelle vornehmen an der mehrere versch. Triggers hängen unteranderem mit langwierigen SP-Aufrufen.

Also hab ich mir gedacht:
1. alter table dbo.xxxxxx disable trigger all;
2. werkeln/mutieren/aktualisieren
3. alter table dbo.xxxxxx enable trigger all;

Doch wenn ich nun die VB6-Appli starte, welche Daten vom SQL-Server bezieht, erhalte ich die Fehlermeldung von MSRDC1:
37000:[Microsoft][ODBC SQL Server Driver][SQL Server] Cursoroperation konnte nicht abgeschlossen werden, da das Tabellenschema sich geändert hat, nachdem der Cursor deklariert wurde.

Aber: ich war der einzige der auf dem Server war (auch keine anderen Benutzer wieder ODBC oder ähnlichem, alle Applis waren zu, etc..

Nach disable/enable sollte doch das Tabellenschema wieder gleich sein.
Ich muss anschliessend den SQL-Server in der SQL-Servergruppe beenden und wieder neustarten und dann funzt auch die Appli wieder.

Aber wieso reicht ein disable/enable nicht? Wieso muss ich den "Serverdienst neu starten"?

thx & cheerioh
SiS

[Edit:] Ich verwende eine MS SQL Server 2000 mit allen Patches [/Edit]
 
Last edited by a moderator:
Ein Trigger gehört zum Datenbank Schema. Das erkennt man bereits am Befehl "alter table". Daher die Fehlermeldung.
Umgehen kannst Du es in dem Du erst "disable", dann den Cursor setzt, den RecordSet o.ä. auflöst und dann "enable" setzte.
Problem: Multi-User fähig ist das auf keinen Fall!!!
Außerdem hat man sich beim Trigger ja auch mal was gedacht... :)

huschi.
 
Back
Top