Happy_davood
سه شنبه 04 تیر 1387, 10:48 صبح
سلام
من چند تا Stored Procedure دارم که داخلشون از TRANSACTION استفاده شده .
بعضی وقت ها هم لازم میشه که یه Transaction رو سمت برنامه ایجاد کنم و مثلاً دو تا از اون SP ها رو پشت سر هم اجرا کنم و در صورت عدم موفقیت هر یک از اونها ROLLBACK میکنم تا قبلی ها تاثیرشون از بین بره .
مشکل وقتی ایجاد میشه که یکی از این SP ها داخل خودشون ROLLBACK بکنند . در این صورت برنامه میافته داخل Catch و این خطا رو میده :
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 1, current count = 0.
البته من می دونم جریان Transaction های Nested چیه و اگه Nested باشند باید از این عبارت استفاده کرد :
SET XACT_ABORT OFF/ON
منتهی در این حالت (وقتی که Transaction هم از برنامه و هم از SP ایجاد میشه) نمی دونم چیکار باید کرد .
من چند تا Stored Procedure دارم که داخلشون از TRANSACTION استفاده شده .
بعضی وقت ها هم لازم میشه که یه Transaction رو سمت برنامه ایجاد کنم و مثلاً دو تا از اون SP ها رو پشت سر هم اجرا کنم و در صورت عدم موفقیت هر یک از اونها ROLLBACK میکنم تا قبلی ها تاثیرشون از بین بره .
مشکل وقتی ایجاد میشه که یکی از این SP ها داخل خودشون ROLLBACK بکنند . در این صورت برنامه میافته داخل Catch و این خطا رو میده :
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 1, current count = 0.
البته من می دونم جریان Transaction های Nested چیه و اگه Nested باشند باید از این عبارت استفاده کرد :
SET XACT_ABORT OFF/ON
منتهی در این حالت (وقتی که Transaction هم از برنامه و هم از SP ایجاد میشه) نمی دونم چیکار باید کرد .