Bitte beachten Sie die DDL unter:commiting äußere Transaktion
create table dbo.Test (id INT)
create PROCEDURE TestProcedure1
as
begin
exec TestProcedure2
insert into Test values (2)
end
create PROCEDURE TestProcedure2
as
begin
begin transaction
insert into Test values (2)
end
Nun ist diese laufen:
exec TestProcedure1 commit
der Fehlerausgang unten:
(1 row(s) affected)
Msg 266, Level 16, State 2, Procedure TestProcedure2, Line 0
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
(1 row(s) affected)
Msg 266, Level 16, State 2, Procedure TestProcedure1, Line 0
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
ich den Grund für den Fehler verstehen Dh es gibt keine Ende-Transaktion in TestProcedure2. Was bedeutet das? Nachdem ich den Fehler sah lief ich die SQL-Anweisung unter:
select * from dbo.Test
Dies ergab zwei Reihen das heißt die äußere Transaktion die innere Transaktion festgeschrieben. Ich habe zwei Fragen:
1) Does the outer transaction always commit the inner transaction.
2) After executing the select statement I executed the following commands:
commit
commit
What affect does running two commit statements have in this scenario?