PDA

View Full Version : سوال: مشکل با SqlTransaction



Happy_davood
سه شنبه 04 تیر 1387, 09: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 ایجاد میشه) نمی دونم چیکار باید کرد .

MH2538
سه شنبه 04 تیر 1387, 13:54 عصر
من چون نمی‌دونستم دیتابیس شما چیه از اوراکل مثال زدم ولی در مجموع فرقی نمی‌کنه


OracleTransaction myTrans = new OracleTransaction();
try
{
Exceute Your First SP Here;
Exceute Your Second SP Here;
Exceute Your DML Command Here;

}
catch (Exception ex)
{
myTrans.Rollback();
}

yasak55
سه شنبه 04 تیر 1387, 14:54 عصر
سلام،
یا Transaction هات رو ببر توی SP ها، یا کلا بیار توی Code. حتی برای اجرای یکی از اون SP ها به صورت تکی، باز هم تراکنش رو توی کد شروع کن و پایان بده. اینجوری مشکل باید حل بشه.