خطای drive zero در sqlserver
drive zero
در SQL Server، عملیات تقسیم بر صفر باعث بوجود آمدن خطا میشود. خطای "Divide By Zero" در هنگامی رخ میدهد که یک عدد توسط صفر تقسیم شود. در این حالت، نتیجه عملیات تقسیم تعریف نشده است و برنامه اجرا کننده برخورد با این خطا را اعلام میکند.
ARITHABORT
وقتی ARITHABORTروی ON تنظیم شده است، در صورتی که خطای مرتبط با عملیات حسابی رخ دهد، دستور اجرا متوقف میشود و یک خطای رولبک دریافت میکنید. این خطا میتواند شامل تقسیم بر صفر (Divide By Zero)، صحت عدد صحیح (Arithmetic overflow) و سایر خطاهای مرتبط با عملیات حسابی باشد.
وقتی ARITHABORTروی OFF تنظیم شده است، در صورت بروز خطای عملیات حسابی، یک مقدار NULL یا صفر به عنوان نتیجه به عنوان خروجی دستور بازگردانده خواهد شد و اجرای دستور ادامه مییابد، بدون اینکه فرآیند را متوقف کند یا خطای رولبک ایجاد کند.
برای فعال کردن ARITHABORT و روشن بودن عملیات خطای حسابی، میتوانید از دستور زیر در SQL Server استفاده کنید:
SET ARITHABORT ON;
به عبارت دیگر، با استفاده از SET ARITHABORT ON، خطاهای حسابی را فعال میکنید و در صورت بروز خطا، اجرای دستور را متوقف میکنید.
مقدار پیشفرض ARITHABORTروی ON است و عموماً توصیه میشود که این تنظیمات را فعال نگه دارید تا از خطاهای ناخواسته جلوگیری کنید و از صحت درستی عملیات حسابی مطمئن شوید.
ANSI_WARNINGS
وقتی ANSI_WARNINGSروی ON تنظیم شده است، هشدارهای ANSIدرصورت بروز خطاهایی که به طور پیشفرض به عنوان خطاهای جدی در SQL Server در نظر گرفته میشوند نمایش داده میشوند. این هشدارها شامل خطاهای مرتبط با عملیات حسابی مانند تقسیم بر صفر (Divide By Zero) و صحت عدد صحیح (Arithmetic overflow) است. با فعال کردن ANSI_WARNINGS، در صورت بروز این خطاها، یک پیام هشدار دریافت خواهید کرد.
وقتی ANSI_WARNINGSروی OFF تنظیم شده است، هشدارهای ANSIغیرفعال شده و در صورت بروز خطاهای مرتبط با عملیات حسابی، دستور به طور عادی اجرا میشود و هیچ پیام هشداری نمایش داده نمیشود.
برای تنظیم ANSI_WARNINGSو روشن کردن هشدارهای ANSI، میتوانید از دستور زیر در SQL Server استفاده کنید:
SET ANSI_WARNINGS ON;
به عبارت دیگر، با استفاده از SET ANSI_WARNINGS ON، هشدارهای ANSIفعال میشوند و در صورت بروز خطاهای مرتبط با عملیات حسابی، پیام هشدار مربوطه را دریافت میکنید.
مقدار پیشفرض ANSI_WARNINGSروی ON است و اغلب توصیه میشود این تنظیم را در وضعیت فعال (ON) نگه دارید تا به عنوان ابزاری برای چک کردن صحت درستی عملیات حسابی استفاده شود و در صورت بروز خطا، از طریق پیام هشدار مطلع شوید.