PDA

View Full Version : سوال: حذف پیغام خطای صادر شده توسط SQL



Mahdi Salami
جمعه 08 مرداد 1389, 11:11 صبح
با سلام.
توی SQL 2008 یه تریگر نوشتم که در شرایط خاص Rollback میکنه. من یه پیغام فارسی با دستور RaisError برمیگردونم. ولی Sql هم پیغام خودش رو به پیغام من اضافه میکنه. میخواستم بدونم چطوری میشه پیغام Sql رو حذف کرد.:متفکر::ناراحت::افسرده:

حمیدرضاصادقیان
شنبه 09 مرداد 1389, 09:41 صبح
سلام. شما کد تریگر رو اینجا قرار بدید و خطایی هم که sql از شما میگیره اینجا بذارید.

Mahdi Salami
دوشنبه 11 مرداد 1389, 15:21 عصر
با سلام به شما دوست عزیز.
ممنون که حداقل کسی پیدا شد که توجهی بکنه.
مشکل من این نیست که تریگر نوشته شده خطا داره یا در اجرا مشکل داره؛ من میخوام اگه فیلد، مقدار مورد نظر من را نداشت یه پیغام فارسی که کاربر متوجه اون بشه صادر بشه. من از دستورRaseerror به صورت زیر استفاده کردم:


if (select mark from Inserted)<0
begin
raiserror('مقدار نمره باید بین 0 تا 20 باشد', 16, 1)
rollback
end

این تریگر به درستی کار میکنه و نمیذاره که نمره به اشتباه وارد بشه ولی مشکل تو پیغامی هست که به کاربر نشون داده مشه. علاوه بر پیغام خطای من، SQL هم یه پیغام خطا به انتهای پیغام من اضافه میکنه، در صورتی که من نمیخوام این اتفاق بیفته. سمت کد هم نمیخوام مدیریت خطا کنم چون میخوام حتی اگه توی SQL Server Management Studio هم خواست روی جدول کاری کنه همون پیغام فارسی بهش داده بشه. در ضمن پیغام خطای SQL اینه:


The transaction ended in the trigger. the batch has been aborted.

اصلا میشه پیغام خطای صادره از طرف SQL رو حذف کرد یا نه؟

zoleikha
چهارشنبه 13 مرداد 1389, 18:09 عصر
شاید مشکل شما از طریق دستور set ANSI_WARNINGS off حل بشه
برای اطلاعات بیشتر از این دستور میتونین به لینک زیر مراجعه کنید
http://msdn.microsoft.com/en-us/library/ms190368.aspx

AminSobati
شنبه 16 مرداد 1389, 16:40 عصر
سلام دوست عزیزم،
در Trigger اگر Rollback انجام بدین این پیغام حتما ظاهر میشه. میتونین این نوع کنترلها رو در SP قبل از Insert انجام بدین