آموزش جامع متغیر سیستمی @@TOTAL_ERRORS در SQL Server؛ Syntax، خروجی و ۱۰ مثال کاربردی

آموزش جامع متغیر سیستمی @@TOTAL_ERRORS در SQL Server

توسط admin | گروه SQL Server | 1405/05/03

نظرات 0

آموزش جامع متغیر سیستمی @@TOTAL_ERRORS در SQL Server با ۱۰ مثال عملی

هنگامی که یک گزارش فنی باید هم برای DBA و هم برای توسعه‌دهنده قابل استفاده باشد، انتخاب تابع کمکی درست اهمیت زیادی پیدا می‌کند. در این مقاله، @@TOTAL_ERRORS از سطح مقدماتی تا سناریوهای حرفه‌ای بررسی می‌شود و هر مثال با خروجی نمونه ارائه شده است.

افزایش این شمارنده یک علامت هشدار زیرساختی است و باید با Error Log، Windows Event Log و وضعیت Storage بررسی شود. تمرکز آموزش بر این است که @@TOTAL_ERRORS در چه Contextی اجرا شود، نتیجه آن چگونه تفسیر شود و چه زمانی باید از یک DMV یا کاتالوگ‌ویوی جایگزین کمک گرفت.

برای مشاهده جایگاه @@TOTAL_ERRORS میان سایر توابع و شمارنده‌ها، راهنمای جامع توابع کمکی کارایی و Metadata در SQL Server را نیز مطالعه کنید.

تعریف و کاربرد اصلی @@TOTAL_ERRORS

متغیر @@TOTAL_ERRORS تعداد خطاهای نوشتن روی دیسک را که SQL Server از آخرین Startup مشاهده کرده است، به‌صورت تجمعی برمی‌گرداند. این تعریف در ظاهر کوتاه است، اما استفاده درست از @@TOTAL_ERRORS به درک مفاهیمی مانند disk write errors، storage health و error log وابسته است.

قاعده عملی @@TOTAL_ERRORS: ابتدا ورودی و Context را معتبر کنید، سپس خروجی را با نوع داده و معنای واقعی آن تفسیر کنید.

Syntax تابع یا متغیر @@TOTAL_ERRORS

SELECT @@TOTAL_ERRORS AS Result;

پارامترهای @@TOTAL_ERRORS

پارامترتوضیح
بدون پارامترشمارنده تجمعی خطاهای Disk Write در سطح Instance.

نوع خروجی و رفتار NULL در @@TOTAL_ERRORS

integer تجمعی. در کد تولیدی بهتر است نوع مقصد به‌صورت صریح تعیین شود؛ زیرا تبدیل ضمنی می‌تواند مقایسه، مرتب‌سازی یا ذخیره نتیجه @@TOTAL_ERRORS را مبهم کند.

مفاهیم کلیدی مرتبط با @@TOTAL_ERRORS

  • disk write errors
  • storage health
  • error log
  • cumulative counter در مبحث @@TOTAL_ERRORS
  • I/O subsystem
  • alert
  • incident response
نقشه مفهومی @@TOTAL_ERRORS در SQL Serverنمودار فنی اختصاصی @@TOTAL_ERRORS شامل disk write errors، storage health، error log، cumulative counter، I/O subsystem@@TOTAL_ERRORSdisk write errorsstorage healtherror logcumulative counterI/O subsystemافزایش این شمارنده یک علامت هشدار زیرساختی است و باید با Error Log، Windows Event Log و وض

تصویر نخست، ارتباط @@TOTAL_ERRORS را با مفاهیم اختصاصی disk write errors، storage health، error log و cumulative counter نشان می‌دهد؛ این روابط مبنای انتخاب ورودی و تفسیر خروجی هستند.

سناریوهای واقعی استفاده از @@TOTAL_ERRORS

سناریوی 1 برای @@TOTAL_ERRORS، «هشدار Storage» است. در این حالت باید نتیجه همراه Context پایگاه داده، زمان نمونه‌برداری و در صورت نیاز شناسه نشست ثبت شود تا داده برای عیب‌یابی بعدی ارزش داشته باشد.

سناریوی 2 برای @@TOTAL_ERRORS، «Baseline پس از Restart» است. در این حالت باید نتیجه همراه Context پایگاه داده، زمان نمونه‌برداری و در صورت نیاز شناسه نشست ثبت شود تا داده برای عیب‌یابی بعدی ارزش داشته باشد.

سناریوی 3 برای @@TOTAL_ERRORS، «کنترل پس از Incident» است. در این حالت باید نتیجه همراه Context پایگاه داده، زمان نمونه‌برداری و در صورت نیاز شناسه نشست ثبت شود تا داده برای عیب‌یابی بعدی ارزش داشته باشد.

سناریوی 4 برای @@TOTAL_ERRORS، «گزارش سلامت روزانه» است. در این حالت باید نتیجه همراه Context پایگاه داده، زمان نمونه‌برداری و در صورت نیاز شناسه نشست ثبت شود تا داده برای عیب‌یابی بعدی ارزش داشته باشد.

مثال‌های عملی @@TOTAL_ERRORS از ساده تا حرفه‌ای

مثال 1: خواندن مقدار پایه @@TOTAL_ERRORS

شمارنده خطاهای نوشتن دیسک را در لحظه فعلی می‌خوانیم. این سناریو به‌طور اختصاصی برای درک رفتار @@TOTAL_ERRORS طراحی شده است.

SELECT @@TOTAL_ERRORS AS CurrentValue;
CurrentValue
0

مقدار @@TOTAL_ERRORS تجمعی است و به‌تنهایی نرخ مصرف را نشان نمی‌دهد. هنگام استفاده سازمانی از @@TOTAL_ERRORS، خروجی نمونه را با داده واقعی محیط خود تطبیق دهید.

مثال 2: ثبت Snapshot زمان‌دار @@TOTAL_ERRORS

مقدار خطاهای نوشتن دیسک را همراه زمان نمونه‌برداری ثبت می‌کنیم. این سناریو به‌طور اختصاصی برای درک رفتار @@TOTAL_ERRORS طراحی شده است.

SELECT @@TOTAL_ERRORS AS CounterValue,
               SYSDATETIME() AS CapturedAt,
               sqlserver_start_time
        FROM sys.dm_os_sys_info;
CounterValueCapturedAtsqlserver_start_time
02026-07-25 00:45:002026-07-20 08:00:00

زمان Startup مشخص می‌کند Baseline از چه نقطه‌ای آغاز شده است. هنگام استفاده سازمانی از @@TOTAL_ERRORS، خروجی نمونه را با داده واقعی محیط خود تطبیق دهید.

مثال 3: محاسبه اختلاف دو نمونه @@TOTAL_ERRORS

برای خطاهای نوشتن دیسک دو Snapshot می‌گیریم و Delta را محاسبه می‌کنیم. این سناریو به‌طور اختصاصی برای درک رفتار @@TOTAL_ERRORS طراحی شده است.

DECLARE @Before bigint = CONVERT(bigint, @@TOTAL_ERRORS);
        WAITFOR DELAY '00:00:01';
        DECLARE @After bigint = CONVERT(bigint, @@TOTAL_ERRORS);
        
        SELECT @Before AS BeforeValue,
               @After AS AfterValue,
               @After - @Before AS DeltaValue;
BeforeValueAfterValueDeltaValue
000

Delta @@TOTAL_ERRORS برای بازه مشخص قابل تفسیرتر از مقدار مطلق است. هنگام استفاده سازمانی از @@TOTAL_ERRORS، خروجی نمونه را با داده واقعی محیط خود تطبیق دهید.

مثال 4: ذخیره @@TOTAL_ERRORS در جدول موقت

برای پایش خطاهای نوشتن دیسک یک جدول Snapshot کوچک می‌سازیم. این سناریو به‌طور اختصاصی برای درک رفتار @@TOTAL_ERRORS طراحی شده است.

CREATE TABLE #CounterSnapshot
        (
            CounterName sysname NOT NULL,
            CounterValue bigint NOT NULL,
            CapturedAt datetime2(3) NOT NULL
        );
        
        INSERT INTO #CounterSnapshot
        VALUES (N'@@TOTAL_ERRORS', CONVERT(bigint, @@TOTAL_ERRORS), SYSDATETIME());
        
        SELECT * FROM #CounterSnapshot;
CounterNameCounterValueCapturedAt
@@TOTAL_ERRORS02026-07-25 00:46:00.000

ذخیره تاریخچه امکان محاسبه نرخ و تشخیص تغییر Baseline را فراهم می‌کند. هنگام استفاده سازمانی از @@TOTAL_ERRORS، خروجی نمونه را با داده واقعی محیط خود تطبیق دهید.

جریان اجرا @@TOTAL_ERRORS در SQL Serverنمودار فنی اختصاصی @@TOTAL_ERRORS شامل disk write errors، storage health، error log، cumulative counter، I/O subsystemdisk write errorsمرحله 1storage healthمرحله 2@@TOTAL_ERRORSمرحله 3error logمرحله 4cumulative counterمرحله 5ورودی تا خروجی @@TOTAL_ERRORSI/O subsystemalertinteger تجمعی.

تصویر دوم، جریان اجرای @@TOTAL_ERRORS را از ورودی و اعتبارسنجی تا تولید خروجی نمایش می‌دهد و نشان می‌دهد که I/O subsystem در کدام مرحله باید کنترل شود.

ادامه مثال‌های پیشرفته @@TOTAL_ERRORS

مثال 5: محاسبه نرخ @@TOTAL_ERRORS

Delta شمارنده خطاهای نوشتن دیسک را بر ثانیه تقسیم می‌کنیم. در این مثال، هدف تنها اجرای Query نیست؛ بلکه نشان دادن یک تصمیم فنی صحیح پیرامون @@TOTAL_ERRORS است.

DECLARE @StartValue bigint = CONVERT(bigint, @@TOTAL_ERRORS);
        DECLARE @StartTime datetime2(3) = SYSDATETIME();
        
        WAITFOR DELAY '00:00:02';
        
        DECLARE @EndValue bigint = CONVERT(bigint, @@TOTAL_ERRORS);
        DECLARE @Seconds decimal(18,3) =
            DATEDIFF_BIG(millisecond, @StartTime, SYSDATETIME()) / 1000.0;
        
        SELECT (@EndValue - @StartValue) / NULLIF(@Seconds, 0) AS EventsPerSecond;
EventsPerSecond
0.000

نرخ @@TOTAL_ERRORS برای مقایسه بازه‌های هم‌اندازه مناسب‌تر است. این نکته از تفسیر سطحی یا استفاده تکراری و بی‌هدف از @@TOTAL_ERRORS جلوگیری می‌کند.

مثال 6: کنترل کاهش غیرمنتظره @@TOTAL_ERRORS

Restart یا Wraparound را با مقایسه دو مقدار تشخیص می‌دهیم. در این مثال، هدف تنها اجرای Query نیست؛ بلکه نشان دادن یک تصمیم فنی صحیح پیرامون @@TOTAL_ERRORS است.

DECLARE @Previous bigint = 100;
        DECLARE @Current bigint = CONVERT(bigint, @@TOTAL_ERRORS);
        
        SELECT CASE
                   WHEN @Current < @Previous THEN N'Baseline بازنشانی یا شمارنده چرخیده است'
                   ELSE N'Delta معتبر است'
               END AS CounterState;
CounterState
Baseline بازنشانی یا شمارنده چرخیده است

در صورت کاهش، Delta منفی را به‌عنوان فعالیت واقعی ثبت نکنید. این نکته از تفسیر سطحی یا استفاده تکراری و بی‌هدف از @@TOTAL_ERRORS جلوگیری می‌کند.

مثال 7: مدیریت بازه صفر برای @@TOTAL_ERRORS

در محاسبه نرخ خطاهای نوشتن دیسک از تقسیم بر صفر جلوگیری می‌کنیم. در این مثال، هدف تنها اجرای Query نیست؛ بلکه نشان دادن یک تصمیم فنی صحیح پیرامون @@TOTAL_ERRORS است.

DECLARE @Delta bigint = 0;
        DECLARE @ElapsedSeconds decimal(18,3) = 0;
        
        SELECT @Delta / NULLIF(@ElapsedSeconds, 0) AS SafeRate;
SafeRate
NULL

NULLIF خطای تقسیم بر صفر را حذف می‌کند و نیاز به Snapshot معتبر را نشان می‌دهد. این نکته از تفسیر سطحی یا استفاده تکراری و بی‌هدف از @@TOTAL_ERRORS جلوگیری می‌کند.

مثال 8: مقایسه @@TOTAL_ERRORS با @@TOTAL_WRITE

برای تفسیر بهتر خطاهای نوشتن دیسک یک شاخص مکمل را کنار آن می‌آوریم. در این مثال، هدف تنها اجرای Query نیست؛ بلکه نشان دادن یک تصمیم فنی صحیح پیرامون @@TOTAL_ERRORS است.

SELECT CONVERT(bigint, @@TOTAL_ERRORS) AS PrimaryCounter,
               CONVERT(bigint, @@TOTAL_WRITE) AS CompanionCounter,
               SYSDATETIME() AS CapturedAt;
PrimaryCounterCompanionCounterCapturedAt
03921002026-07-25 00:47:00

همبستگی دو شمارنده فقط سرنخ است و علت قطعی خطاهای نوشتن دیسک را اثبات نمی‌کند. این نکته از تفسیر سطحی یا استفاده تکراری و بی‌هدف از @@TOTAL_ERRORS جلوگیری می‌کند.

مثال 9: روش اشتباه در تفسیر @@TOTAL_ERRORS

به‌جای قضاوت بر اساس عدد مطلق خطاهای نوشتن دیسک، Context زمانی را اضافه می‌کنیم. در این مثال، هدف تنها اجرای Query نیست؛ بلکه نشان دادن یک تصمیم فنی صحیح پیرامون @@TOTAL_ERRORS است.

SELECT CONVERT(bigint, @@TOTAL_ERRORS) AS AbsoluteValue,
               DATEDIFF_BIG(second, sqlserver_start_time, SYSDATETIME()) AS UptimeSeconds
        FROM sys.dm_os_sys_info;
AbsoluteValueUptimeSeconds
0414300

دو سرور با Uptime متفاوت را نباید فقط با مقدار تجمعی مقایسه کرد. این نکته از تفسیر سطحی یا استفاده تکراری و بی‌هدف از @@TOTAL_ERRORS جلوگیری می‌کند.

مثال 10: Snapshot کم‌هزینه @@TOTAL_ERRORS

برای خطاهای نوشتن دیسک تنها ستون‌های ضروری را در نمونه‌برداری دوره‌ای می‌خوانیم. در این مثال، هدف تنها اجرای Query نیست؛ بلکه نشان دادن یک تصمیم فنی صحیح پیرامون @@TOTAL_ERRORS است.

SELECT
            CONVERT(bigint, @@TOTAL_ERRORS) AS CounterValue,
            sqlserver_start_time,
            SYSUTCDATETIME() AS CapturedAtUtc
        FROM sys.dm_os_sys_info;
CounterValuesqlserver_start_timeCapturedAtUtc
02026-07-20 08:00:002026-07-24 21:18:00

Query سبک است، اما Frequency جمع‌آوری و نگهداری تاریخچه باید منطقی باشد. این نکته از تفسیر سطحی یا استفاده تکراری و بی‌هدف از @@TOTAL_ERRORS جلوگیری می‌کند.

خطاهای رایج در کار با @@TOTAL_ERRORS

خطای 1 در استفاده از @@TOTAL_ERRORS

این متغیر شمارنده همه خطاهای SQL نیست و به خطاهای نوشتن دیسک مربوط است. برای رفع این مشکل، ورودی و Context را از منبع معتبر بخوانید و نتیجه @@TOTAL_ERRORS را پیش از ادامه منطق با شرط صریح کنترل کنید.

خطای 2 در استفاده از @@TOTAL_ERRORS

صفر بودن آن سلامت کامل Storage را تضمین نمی‌کند. برای رفع این مشکل، ورودی و Context را از منبع معتبر بخوانید و نتیجه @@TOTAL_ERRORS را پیش از ادامه منطق با شرط صریح کنترل کنید.

خطای 3 در استفاده از @@TOTAL_ERRORS

هر افزایش باید ثبت و با زمان، Event Log و خطاهای 823، 824 یا 825 همبسته شود. برای رفع این مشکل، ورودی و Context را از منبع معتبر بخوانید و نتیجه @@TOTAL_ERRORS را پیش از ادامه منطق با شرط صریح کنترل کنید.

ملاحظات Performance برای @@TOTAL_ERRORS

از نظر کارایی، @@TOTAL_ERRORS زمانی کم‌هزینه باقی می‌ماند که روی یک مقدار هدفمند یا مجموعه محدود اجرا شود. فراخوانی آن روی هزاران ردیف بدون Predicate اولیه می‌تواند CPU و زمان گزارش را افزایش دهد.

اگر گزارش به چند Property از چندین شیء نیاز دارد، استفاده Set-based از کاتالوگ‌ویو یا DMV مرتبط با disk write errors معمولاً بهتر از تکرار @@TOTAL_ERRORS برای هر سلول است.

در Jobهای دوره‌ای، نتیجه @@TOTAL_ERRORS را همراه Timestamp ذخیره کنید، اما Frequency نمونه‌برداری را متناسب با سرعت تغییر داده انتخاب کنید. جمع‌آوری بیش از حد، جدول تاریخچه را بدون ارزش تحلیلی بزرگ می‌کند.

برای محاسبات عددی پیرامون @@TOTAL_ERRORS، نوع داده را قبل از ضرب یا تفریق ارتقا دهید و در سناریوهای تجمعی، Restart و بازنشانی Baseline را در نظر بگیرید.

Best Practiceهای اختصاصی @@TOTAL_ERRORS

  1. ورودی @@TOTAL_ERRORS را از نام یا شناسه معتبر و دارای Schema یا Context روشن تأمین کنید.
  2. نتیجه NULL در @@TOTAL_ERRORS را از مقدار صفر، false یا رشته خالی جدا نگه دارید.
  3. نوع خروجی @@TOTAL_ERRORS را پیش از ذخیره یا مقایسه به نوع مقصد مناسب تبدیل کنید.
  4. در گزارش‌های بزرگ، گزینه Set-based مرتبط با disk write errors را ارزیابی کنید.
  5. زمان Capture، نام Database و در صورت نیاز @@SPID را کنار نتیجه @@TOTAL_ERRORS ثبت کنید.
  6. مجوز مشاهده Metadata یا DMV را با حداقل سطح دسترسی لازم تنظیم کنید. در مبحث @@TOTAL_ERRORS
  7. مثال‌های @@TOTAL_ERRORS را روی نسخه و Edition واقعی محیط هدف آزمایش کنید.
  8. برای SQL پویا، خروجی نامی @@TOTAL_ERRORS را با QUOTENAME و پارامترسازی ایمن مصرف کنید.
سناریوی عملی و بهینه‌سازی @@TOTAL_ERRORS در SQL Serverنمودار فنی اختصاصی @@TOTAL_ERRORS شامل disk write errors، storage health، error log، cumulative counter، I/O subsystemروش پرخطرBest Practice@@TOTAL_ERRORSاین متغیر شمارنده همه خطاهای SQL نیست و به خطاصفر بودن آن سلامت کامل Storage را تضمین نمی‌کنتفسیر خام @@TOTAL_ERRORSهشدار Storagedisk write errorsI/O subsystem

تصویر سوم، تفاوت روش پرخطر و Best Practice در استفاده از @@TOTAL_ERRORS را مقایسه می‌کند؛ هدف آن جلوگیری از خطاهای مربوط به این متغیر شمارنده همه خطاهای SQL نیست و به خطاهای نوشتن دیسک مربوط است. و بهبود تصمیم‌گیری فنی است.

سؤالات متداول اختصاصی @@TOTAL_ERRORS

@@TOTAL_ERRORS دقیقاً چه مسئله‌ای را در SQL Server حل می‌کند؟

متغیر @@TOTAL_ERRORS تعداد خطاهای نوشتن روی دیسک را که SQL Server از آخرین Startup مشاهده کرده است، به‌صورت تجمعی برمی‌گرداند. در عمل، افزایش این شمارنده یک علامت هشدار زیرساختی است و باید با Error Log، Windows Event Log و وضعیت Storage بررسی شود. بنابراین استفاده از @@TOTAL_ERRORS زمانی ارزشمند است که خروجی آن در یک تصمیم فنی روشن مصرف شود، نه اینکه فقط برای نمایش عدد یا نام به کار رود.

نوع خروجی @@TOTAL_ERRORS چیست و چگونه باید آن را مدیریت کرد؟

نوع خروجی این ابزار چنین است: integer تجمعی. بهتر است پیش از تبدیل نوع، مقایسه یا درج در جدول گزارش، حالت NULL و محدوده مقدار را صریح کنترل کنید تا رفتار @@TOTAL_ERRORS قابل پیش‌بینی بماند.

آیا @@TOTAL_ERRORS در گزارش‌های سازمانی کاربرد تجاری دارد؟

بله. در سناریوهایی مانند هشدار Storage و Baseline پس از Restart، خروجی @@TOTAL_ERRORS می‌تواند کیفیت گزارش مدیریتی را بالا ببرد. ارزش تجاری زمانی ایجاد می‌شود که این داده به هشدار، ظرفیت‌سنجی یا کاهش زمان عیب‌یابی متصل شود.

استفاده از @@TOTAL_ERRORS در پروژه‌های بزرگ چه مزیتی دارد؟

در پروژه بزرگ، استانداردسازی نحوه استفاده از @@TOTAL_ERRORS باعث می‌شود تیم توسعه، DBA و پشتیبانی یک تعریف مشترک از disk write errors و storage health داشته باشند. این هماهنگی خطاهای تفسیر و دوباره‌کاری را کاهش می‌دهد.

تفاوت @@TOTAL_ERRORS با گزینه نزدیک آن چیست؟

@@TOTAL_ERRORS یک شمارنده کلی است؛ SQL Server Error Log و Extended Events جزئیات رخداد را فراهم می‌کنند. انتخاب صحیح باید بر اساس حجم داده، نیاز به خروجی Set-based و سطح جزئیات گزارش انجام شود؛ یک تابع scalar همیشه جایگزین کاتالوگ‌ویو یا DMV کامل نیست.

برای طراحی اسکریپت حرفه‌ای مبتنی بر @@TOTAL_ERRORS چه خدماتی لازم می‌شود؟

در پروژه‌های حساس می‌توان منطق @@TOTAL_ERRORS را در قالب رویه مانیتورینگ، Dashboard، گزارش زمان‌بندی‌شده یا کنترل Deployment پیاده کرد. تحلیل نیاز، تست روی نسخه واقعی SQL Server و مستندسازی خروجی، بخش‌های مهم خدمات مشاوره و انجام پروژه هستند.

رایج‌ترین خطا هنگام کار با @@TOTAL_ERRORS چیست؟

یکی از خطاهای مهم این است که این متغیر شمارنده همه خطاهای SQL نیست و به خطاهای نوشتن دیسک مربوط است. همچنین نادیده گرفتن NULL یا Context اجرای Query می‌تواند نتیجه‌ای ظاهراً معتبر ولی از نظر عملیاتی اشتباه تولید کند.

آیا فراخوانی زیاد @@TOTAL_ERRORS بر Performance اثر می‌گذارد؟

یک فراخوانی منفرد معمولاً سبک است، اما اجرای @@TOTAL_ERRORS روی مجموعه بسیار بزرگ یا در شرطی که برای هر ردیف محاسبه شود می‌تواند هزینه ایجاد کند. ابتدا ردیف‌ها را محدود کنید و در گزارش‌های وسیع، جایگزین Set-based را ارزیابی کنید.

بهترین روش استفاده از @@TOTAL_ERRORS چیست؟

بهترین روش این است که ورودی @@TOTAL_ERRORS اعتبارسنجی، نوع خروجی صریح، حالت NULL مدیریت و نتیجه همراه زمان و Context ثبت شود. همچنین باید مشخص باشد که خروجی برای نمایش، کنترل ایمنی یا تصمیم کارایی مصرف می‌شود.

@@TOTAL_ERRORS با کدام نسخه‌های SQL Server سازگار است؟

از متغیرهای سیستمی قدیمی SQL Server است و برای هشدار اولیه مناسب است. با این حال، هنگام انتقال اسکریپت به Azure SQL یا Edition دیگر، Propertyها، مجوزهای Metadata و تفاوت‌های پلتفرم را روی همان محیط آزمایش کنید.

سؤالات مصاحبه درباره @@TOTAL_ERRORS

در مصاحبه چگونه تفاوت ورودی و خروجی @@TOTAL_ERRORS را توضیح می‌دهید؟

پاسخ مناسب باید Syntax یعنی @@TOTAL_ERRORS، نوع خروجی و شرایط NULL را توضیح دهد و یک نمونه از هشدار Storage ارائه کند.

چه زمانی به‌جای @@TOTAL_ERRORS از کاتالوگ‌ویو یا DMV استفاده می‌کنید؟

وقتی گزارش چندین ردیف و چند Property نیاز دارد، روش Set-based معمولاً مناسب‌تر است؛ @@TOTAL_ERRORS برای تبدیل یا بررسی هدفمند یک مقدار بسیار خواناست.

چگونه نتیجه نامعتبر @@TOTAL_ERRORS را از مقدار false یا صفر جدا می‌کنید؟

با بررسی صریح IS NULL، اعتبارسنجی ورودی و در صورت نیاز Join با Metadata منبع، علت نتیجه را روشن می‌کنم. این توضیح به‌طور اختصاصی به @@TOTAL_ERRORS مربوط است.

چه نکته Performance درباره @@TOTAL_ERRORS مهم است؟

فراخوانی را پس از محدود کردن مجموعه داده انجام می‌دهم و از محاسبه تکراری @@TOTAL_ERRORS در SELECT و WHERE جلوگیری می‌کنم.

یک سناریوی واقعی برای @@TOTAL_ERRORS بیان کنید.

سناریوی مناسب می‌تواند کنترل پس از Incident باشد؛ در آن خروجی همراه Timestamp، نام Database و شناسه نشست ثبت می‌شود تا قابل پیگیری باشد.

چک‌لیست نهایی استفاده از @@TOTAL_ERRORS

  • Syntax @@TOTAL_ERRORS و ورودی‌های آن با نسخه هدف تطبیق داده شده است.
  • Context پایگاه داده یا Instance برای @@TOTAL_ERRORS روشن است.
  • مجوز لازم برای Metadata یا DMV بررسی شده است. در مبحث @@TOTAL_ERRORS
  • NULL، مقدار نامعتبر و حالت مرزی @@TOTAL_ERRORS تست شده است.
  • نمونه خروجی با نوع داده واقعی مقایسه شده است. در مبحث @@TOTAL_ERRORS
  • در Query بزرگ، هزینه فراخوانی تکراری @@TOTAL_ERRORS اندازه‌گیری شده است.
  • جایگزین Set-based برای گزارش انبوه ارزیابی شده است. در مبحث @@TOTAL_ERRORS
  • نتیجه نهایی همراه Timestamp و توضیح عملیاتی ثبت می‌شود. در مبحث @@TOTAL_ERRORS

جمع‌بندی آموزش @@TOTAL_ERRORS

@@TOTAL_ERRORS ابزاری کوچک اما مؤثر برای افزایش این شمارنده یک علامت هشدار زیرساختی است و باید با Error Log، Windows Event Log و وضعیت Storage بررسی شود. است. استفاده حرفه‌ای از آن به اعتبارسنجی ورودی، تفسیر نوع خروجی، کنترل NULL و انتخاب Scope مناسب وابسته است.

پس از تسلط بر @@TOTAL_ERRORS، برای مقایسه آن با سایر ابزارهای این مجموعه به مقاله مادر توابع کمکی Performance و Metadata در SQL Server بازگردید.

خدمات برنامه‌نویسی و پایگاه داده

برنامه‌نویسی در اصفهان

قبول سفارش‌های برنامه‌نویسی و پایگاه داده: 09131253620

انجام پروژه‌های برنامه‌نویسی، آموزش برنامه‌نویسی و آموزش پایگاه داده SQL Server با رویکرد حرفه‌ای، مستند و قابل توسعه انجام می‌شود.

مجموعه‌ای معتبر با سابقه فعالیت حرفه‌ای از سال ۱۳۷۵ شمسی

از سال ۱۳۷۵ شمسی تاکنون در زمینه طراحی و اجرای پروژه‌های برنامه‌نویسی، پایگاه داده، سیستم‌های تحت وب، وب‌سایت و راهکارهای نرم‌افزاری فعالیت می‌کنیم.

برای سفارش پروژه‌های برنامه‌نویسی و پایگاه داده، سیستم‌های تحت وب، وب‌سایت و راهکارهای نرم‌افزاری جدید، با شماره تلفن همراه 09131253620 تماس حاصل فرمایید.

ایتا، واتساپ و تماس مستقیم: +989131253620

تماس با ما

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر