266: Die Transaktionsanzahl nach EXECUTE zeigt an, dass eine COMMIT- oder ROLLBACK TRANSACTION-Anweisung fehlt. Vorherige Anzahl
Fehlermeldung:
Meldung 266, Ebene 16, Status 2, Prozedur, Zeile 0
Die Transaktionsanzahl nach EXECUTE zeigt an, dass eine COMMIT- oder ROLLBACK TRANSACTION-Anweisung fehlt. Vorherige Anzahl = %1!, aktuelle Anzahl = %2!.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, eine Prozedur auszuführen, aber die Transaktionanzahl vor und nach dem EXECUTE ist nicht identisch.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Das Statement kann so nicht ausgeführt werden. Die Transaktionsanzahl vor und nach dem EXECUTE muss identisch sein.
Versionen:
Alle Versionen von SQL Server.
Beispiele:
IF OBJECT_ID ('dbo.p1') IS NOT NULL
DROP PROCEDURE dbo.p1;
GO
IF OBJECT_ID ('dbo.p2') IS NOT NULL
DROP PROCEDURE dbo.p2;
GO
CREATE PROCEDURE dbo.p2
AS
ROLLBACK TRAN;
GO
CREATE PROCEDURE dbo.p1
AS
BEGIN TRAN
EXEC dbo.p2;
COMMIT TRAN;
GO
EXEC dbo.p1;
Anmerkungen:
Im obigen Beispiel wird versucht, die Prozedur p2 innerhalb von p1 auszuführen. Da p2 die Transaktion zurückrollt, die in p1 gestartet wurde, ist die Transaktionanzahl vor und nach dem Call von p2 nicht identisch. Dies löst den Fehler aus.