دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
User Control در سی شارپ
1404/01/15 -
مدیریت خطا TRY-CATCH در پایگاه داده SQL
1404/01/15 -
Class Library در سی شارپ
1404/01/10 -
دستور BREAK در پایگاه داده sql
1404/01/02 -
دستور CONTINUE در پایگاه داده SQL
1404/01/01 -
دستور WAITFOR در پایگاه داده SQL
1403/12/26
انواع خطا ها (ERROR) در پایگاه داده SQL

انواع خطاها (ERROR) در پایگاه داده SQL
در SQL، خطاها میتوانند به دستههای مختلفی تقسیم شوند.
یکی از رایجترین انواع خطاها، خطاهای نحوی هستند که زمانی رخ میدهند که دستورات SQL به صورت اشتباه نوشته شوند.
این نوع خطاها شامل استفاده نادرست از دستورات SQL، ترکیب نادرست کلیدواژهها و فرمت اشتباه دادهها میشود.
همچنین، خطاهای دسترسی زمانی رخ میدهند که کاربر سعی کند عملیاتی را انجام دهد که اجازه انجام آن را ندارد.
این نوع خطا معمولاً به دلیل کمبود مجوزهای لازم برای خواندن، نوشتن یا تغییر دادهها به وجود میآید.
علاوه بر این، خطاهای تراکنشی معمولاً در زمان بروز مشکلات در عملیات تراکنشها رخ میدهند.
برای مثال، اگر تراکنش در میانه راه شکست بخورد، باید آن را بازگرداند تا دادهها دچار تناقض نشوند.
خطاهای منبع نیز زمانی ایجاد میشوند که منابع سیستم مانند حافظه یا فضای دیسک کافی نباشند تا عملیات اجرا شوند.
در نهایت، خطاهای اجرایی به هنگام پردازش دستورات SQL یا دادهها بروز میکنند، مثل زمانی که یک رکورد مورد نظر وجود نداشته باشد یا عملیات محاسباتی مانند تقسیم بر صفر انجام شود.
شناسایی و مدیریت این خطاها نقش حیاتی در پایداری و عملکرد بهینه پایگاه داده ایفا میکند.
()ERROR_MESSAGE - دریافت پیام خطا
تابع ()ERROR_MESSAGE متن کامل خطایی که رخ داده است را برمیگرداند.
این پیام توضیحی در مورد مشکل ایجادشده ارائه میدهد.
مثال:
BEGIN TRY
SELECT 1 / 0;
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE();
END CATCH
خروجی: Divide by zero error encountered.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
همین حالا شروع کنید و به دنیای دادهها بپیوندید!
()ERROR_NUMBER - دریافت شماره خطا
تابع ()ERROR_NUMBER شماره منحصربهفردی که به خطای ایجادشده در SQL Server اختصاص داده شده است را برمیگرداند.
مثال:
BEGIN TRY
SELECT 1 / 0;
END TRY
BEGIN CATCH
PRINT ERROR_NUMBER();
END CATCH
خروجی: 8134 (شماره خطای مربوط به تقسیم بر صفر)
()ERROR_LINE - دریافت شماره خطی که خطا در آن رخ داده است
تابع ()ERROR_LINE شماره خطی که در آن خطا ایجاد شده را برمیگرداند.
این تابع برای اشکالزدایی (Debugging) مفید است.
مثال:
BEGIN TRY
SELECT 1 / 0;
END TRY
BEGIN CATCH
PRINT 'خطا در خط شماره: ' + CAST(ERROR_LINE() AS NVARCHAR(10));
END CATCH
()ERROR_PROCEDURE - دریافت نام رویهای که خطا در آن رخ داده است
تابع ()ERROR_PROCEDURE نام رویه ذخیرهشده (Stored Procedure) یا تابع (Function) که خطا در آن رخ داده است را برمیگرداند.
اگر خطا خارج از رویه رخ دهد، مقدار NULL برمیگردد.
مثال:
CREATE PROCEDURE TestErrorProcedure
AS
BEGIN
BEGIN TRY
SELECT 1 / 0;
END TRY
BEGIN CATCH
PRINT 'خطا در رویه: ' + ISNULL(ERROR_PROCEDURE(), 'NULL');
END CATCH
END;
EXEC TestErrorProcedure;
خروجی: خطا در رویه: TestErrorProcedure
()ERROR_SEVERITY - دریافت شدت خطا
تابع ()ERROR_SEVERITY مقدار شدت (Severity) خطا را برمیگرداند که نشان میدهد خطا چقدر جدی است.
شدت خطاها به دستههای مختلفی تقسیم میشود:
- 0 تا 10: اخطارهای جزئی
- 11 تا 16: خطاهای کاربر
- 17 تا 25: خطاهای سیستمی که ممکن است منجر به قطع اتصال شوند.
مثال:
BEGIN TRY
SELECT 1 / 0;
END TRY
BEGIN CATCH
PRINT 'شدت خطا: ' + CAST(ERROR_SEVERITY() AS NVARCHAR(10));
END CATCH
خروجی: شدت خطا: 16
()ERROR_STATE - دریافت وضعیت خطا
تابع ()ERROR_STATE مقدار وضعیت خطا را برمیگرداند که به شناسایی دقیقتر مشکل کمک میکند.
این مقدار ممکن است بسته به شرایط مختلف متفاوت باشد.
مثال:
BEGIN TRY
SELECT 1 / 0;
END TRY
BEGIN CATCH
PRINT 'وضعیت خطا: ' + CAST(ERROR_STATE() AS NVARCHAR(10));
END CATCH
خروجی: وضعیت خطا: 1
نتیجهگیری
شناخت انواع خطاها در SQL Server و استفاده از توابع داخلی برای مدیریت آنها، به توسعهدهندگان کمک میکند تا مشکلات پایگاه داده را بهتر تشخیص داده و برنامههایی پایدارتر و قابل نگهداریتر ایجاد کنند.
با ترکیب TRY...CATCH و این توابع میتوان سیستمهای مدیریت خطا را بهینهسازی کرد و از تأثیر خطاها بر عملکرد کلی برنامه جلوگیری کرد.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .