PDA

View Full Version : چگونه می توان از شماره خطا به شرح خطا دست یافت؟



منصور بزرگمهر
چهارشنبه 23 بهمن 1387, 22:55 عصر
در SQL Server مانند دات نت خطاها را با شرح نمایش نمی دهد، فقط شماره خطا و خط آن را نمایش می دهد، چگونه می توان به شرح خطا دست یافت؟
متشکرم

AminSobati
چهارشنبه 23 بهمن 1387, 23:42 عصر
دوست عزیزم از نسخه 2005 به بعد میتونین از توابع متنوعی استفاده کنین:
ERROR_LINE
ERROR_MESSAGE
ERROR_NUMBER
و ...

baran_mehr
پنج شنبه 24 بهمن 1387, 10:26 صبح
AminSobati جان چطور باید بدونیم که کدوم خطا برای چی هست. منظورم توضیحاتشه.ایا ادرس سایتی رو دارید که توضیحاتش توش باشه.

mehdi.mousavi
پنج شنبه 24 بهمن 1387, 10:49 صبح
AminSobati جان چطور باید بدونیم که کدوم خطا برای چی هست. منظورم توضیحاتشه.ایا ادرس سایتی رو دارید که توضیحاتش توش باشه.

سلام.
ببینید. کلیه پیامها در جدول messages نگهداری میشه:



SELECT * FROM sys.messagesاونجا میتونید بر اساس message_id و severity به توضیح اون پیام برسید! اما چیزی که Aminsobati گفتن به نظر میرسه مشکل شما رو حل کنه. اگر در BOL نگاه کنید، میبینید:


USE AdventureWorks;
GO

BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GOکه نحوه استفاده از توابعی که AminSobati ذکر کردن رو نشون داده!

baran_mehr
پنج شنبه 24 بهمن 1387, 13:11 عصر
با تشکر از شما.
من منظورم توضیح مربوط به هر خطا هست .مثلا گفته باشه خطای شماره 1 برای استارت نبودن اسکیوال هست یا هر چیز دیگه که وجود داره.
ایا ادرسی دارید که با این خطاها اشنا بشیم

baran_mehr
پنج شنبه 24 بهمن 1387, 13:30 عصر
سلام داداش گلم این دستور رو اجرا کردم اما خطا گرفت . اسکیوال من 2000 هست ممکنه مشکل از اون بالشه

USE msdb
SELECT * FROM sys.messages

mehdi.mousavi
پنج شنبه 24 بهمن 1387, 13:33 عصر
سلام داداش گلم این دستور رو اجرا کردم اما خطا گرفت . اسکیوال من 2000 هست ممکنه مشکل از اون بالشه

سلام.
در SQL Server 2000 اندکی متفاوته:


SELECT * FROM master.dbo.sysmessages

ضمنا، لیست خطاها رو میتونید در این سایت پیدا کنید (http://msdn.microsoft.com/en-us/library/aa937595.aspx). اونجا همه خطاها (با شماره اشون) لیست شده.

AminSobati
پنج شنبه 24 بهمن 1387, 17:28 عصر
یک پیغام خطا ممکنه دلایل مختلف داشته باشه. میتونین از Google استفاده کنین!

baran_mehr
پنج شنبه 24 بهمن 1387, 17:34 عصر
ممنون از لطفتون داداشی