آموزش دستورات DBCC در SQL Server؛ مثال، خطا و نکات حرفه‌ای

آموزش جامع دستورات DBCC در SQL Server

توسط admin | گروه SQL Server | 1405/04/29

نظرات 0

آموزش جامع دستورات DBCC در SQL Server

مقدمه و مسیر یادگیری

دستورات DBCC یکی از موضوع‌های مهم مجموعه دستورات کاربردی Microsoft SQL Server است. مجموعه فرمان‌های Database Console Commands برای بررسی سازگاری، نگهداری، عیب‌یابی و مشاهده وضعیت داخلی SQL Server است. شناخت این دستور زمانی ارزشمند می‌شود که علاوه بر شکل نوشتن، محدوده اثر، نیازمندی مجوز، رفتار در تراکنش و پیامد عملیاتی آن نیز روشن باشد.

این مقاله از تعریف و Syntax آغاز می‌کند، سپس پارامترها، خروجی، مثال‌های مستقل، خطاهای رایج، ملاحظات کارایی و بهترین روش‌های استفاده را توضیح می‌دهد. نمونه‌ها از ساده به حرفه‌ای چیده شده‌اند و بخش پرسش‌های متداول و مصاحبه نیز برای مرور سریع در نظر گرفته شده است.

پیش از اجرای نمونه‌های مدیریتی روی سرور واقعی، نام Database، مسیر فایل، شناسه Session و سطح دسترسی را با محیط خود تطبیق دهید. نمونه‌ای که شامل Backup، Restore، DBCC یا KILL باشد باید ابتدا در آزمایشگاه و با برنامه بازگشت بررسی شود.

برای دیدن جایگاه این موضوع در کنار سایر فرمان‌ها، راهنمای جامع دستورات کاربردی SQL Server را مطالعه کنید. مقاله مادر مسیر انتخاب میان فرمان‌های پیام، خطا، Session، نگهداری و بازیابی را یکجا نشان می‌دهد.

تعریف دستورات DBCC

مجموعه فرمان‌های Database Console Commands برای بررسی سازگاری، نگهداری، عیب‌یابی و مشاهده وضعیت داخلی SQL Server است.

در SQL Server هر فرمان در یک Scope مشخص اجرا می‌شود. هنگام استفاده از DBCC باید مشخص باشد اثر آن فقط روی عبارت فعلی، Batch، Session، Database یا کل Instance است. همین تشخیص، پایه جلوگیری از اجرای ناخواسته و طراحی درست آزمون است.

از دید مهندسی، Syntax صحیح شرط لازم است اما کافی نیست. داده ورودی، Collation، نوع داده، تنظیمات SET، سطح جداسازی، مجوز و وضعیت Connection می‌توانند نتیجه را تغییر دهند. بنابراین مثال حرفه‌ای باید پیش‌شرط و خروجی کنترلی داشته باشد.

Syntax استاندارد

DBCC command [ ( argument [ ,...n ] ) ] [ WITH option [ ,...n ] ];

پارامترها و اجزای مهم

  • نام فرمان مانند CHECKDB، CHECKTABLE یا CHECKIDENT
  • نام Database، Table یا شناسه نشست بر اساس فرمان
  • گزینه‌هایی مانند NO_INFOMSGS و ALL_ERRORMSGS
  • مجوزهای لازم متناسب با عملیات

خروجی و اثر اجرایی

بسته به فرمان، پیام تشخیصی، Result Set یا تغییر مدیریتی ایجاد می‌شود؛ DBCC یک Return Type واحد ندارد.

اگر این دستور در Procedure، Job یا ابزار استقرار استفاده شود، Caller باید بداند موفقیت چگونه اعلام می‌شود و خطا از چه مسیری برمی‌گردد. استفاده از Result Set کنترلی، پیام کوتاه، Error Number مشخص یا رکورد لاگ باید بر اساس قرارداد پروژه انتخاب شود.

کاربردهای واقعی در پروژه

سه کاربرد پرتکرار این موضوع عبارت‌اند از کنترل سلامت فیزیکی و منطقی Database، بازبینی Seed ستون Identity، تشخیص تراکنش باز و مصرف Log. در هر سه حالت، مالک عملیات و معیار پذیرش باید قبل از اجرا تعیین شود و تغییر مهم بدون نسخه پشتیبان یا مسیر Rollback انجام نشود.

در پروژه سازمانی بهتر است فرمان داخل یک Runbook یا اسکریپت نسخه‌بندی‌شده قرار گیرد. نام سرور و Database از محیط دریافت شود، ولی Identifier پویا فقط پس از اعتبارسنجی و QUOTENAME ساخته شود. مقادیر داده نیز در Dynamic SQL به‌صورت پارامتر ارسال شوند.

قاعده عملی: DBCC را فقط زمانی اجرا کنید که بتوانید در یک جمله بگویید چه چیزی تغییر می‌کند، موفقیت چگونه سنجیده می‌شود و در صورت شکست چه اقدامی انجام خواهد شد.

مثال‌های عملی مستقل

ده مثال زیر جنبه‌های متفاوت DBCC را پوشش می‌دهند. هر نمونه هدف، Query، خروجی مورد انتظار و نکته عملیاتی دارد. فرمان‌های دارای اثر مدیریتی با نام‌ها و مسیرهای نمونه نوشته شده‌اند و باید پیش از اجرا شخصی‌سازی و تأیید شوند.

مثال شماره 1: بررسی سلامت پایگاه master

در این سناریو هدف آن است که «بررسی سلامت پایگاه master» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC CHECKDB(N'master') WITH NO_INFOMSGS, ALL_ERRORMSGS;
خروجی نمونهتفسیر نتیجه
در حالت سالم فقط پیام تکمیل بدون خطانتیجه مورد انتظار نشان می‌دهد سناریوی بررسی سلامت پایگاه master با موفقیت طی شده است.

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

مثال شماره 2: بررسی سازگاری Catalog

در این سناریو هدف آن است که «بررسی سازگاری Catalog» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC CHECKCATALOG(N'master') WITH NO_INFOMSGS;
خروجی نمونهتفسیر نتیجه
عدم گزارش خطا در Catalog سالمنتیجه مورد انتظار نشان می‌دهد سناریوی بررسی سازگاری Catalog با موفقیت طی شده است.

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

مثال شماره 3: مشاهده گزینه‌های Session

در این سناریو هدف آن است که «مشاهده گزینه‌های Session» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC USEROPTIONS;
خروجی نمونهتفسیر نتیجه
جدولی از گزینه‌ها مانند isolation levelنتیجه مورد انتظار نشان می‌دهد سناریوی مشاهده گزینه‌های Session با موفقیت طی شده است.

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

مثال شماره 4: مشاهده تراکنش باز قدیمی

در این سناریو هدف آن است که «مشاهده تراکنش باز قدیمی» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC OPENTRAN(N'master') WITH TABLERESULTS, NO_INFOMSGS;
خروجی نمونهتفسیر نتیجه
اطلاعات قدیمی‌ترین تراکنش یا نبود تراکنش بازنتیجه مورد انتظار نشان می‌دهد سناریوی مشاهده تراکنش باز قدیمی با موفقیت طی شده است.

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

مثال شماره 5: گزارش فضای Transaction Log

در این سناریو هدف آن است که «گزارش فضای Transaction Log» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC SQLPERF(LOGSPACE);
خروجی نمونهتفسیر نتیجه
درصد مصرف Log برای Databaseهانتیجه مورد انتظار نشان می‌دهد سناریوی گزارش فضای Transaction Log با موفقیت طی شده است.

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

مثال شماره 6: بازبینی ورودی نشست جاری

در این سناریو هدف آن است که «بازبینی ورودی نشست جاری» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC INPUTBUFFER(@@SPID);
خروجی نمونهتفسیر نتیجه
آخرین فرمان ارسال‌شده به نشست جارینتیجه مورد انتظار نشان می‌دهد سناریوی بازبینی ورودی نشست جاری با موفقیت طی شده است.

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

مثال شماره 7: کنترل Seed جدول موقت

در این سناریو هدف آن است که «کنترل Seed جدول موقت» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DROP TABLE IF EXISTS #DbccIdentity;
CREATE TABLE #DbccIdentity(Id int IDENTITY(1,1));
INSERT #DbccIdentity DEFAULT VALUES;
DBCC CHECKIDENT('#DbccIdentity', NORESEED);
خروجی نمونهتفسیر نتیجه
Current identity value برابر 1نتیجه مورد انتظار نشان می‌دهد سناریوی کنترل Seed جدول موقت با موفقیت طی شده است.

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

مثال شماره 8: تغییر Seed کنترل‌شده

در این سناریو هدف آن است که «تغییر Seed کنترل‌شده» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DROP TABLE IF EXISTS #DbccIdentity;
CREATE TABLE #DbccIdentity(Id int IDENTITY(1,1));
DBCC CHECKIDENT('#DbccIdentity', RESEED, 10);
INSERT #DbccIdentity DEFAULT VALUES;
SELECT Id FROM #DbccIdentity;
خروجی نمونهتفسیر نتیجه
برای جدول خالی Id برابر 10 یا مطابق قاعده Seedنتیجه مورد انتظار نشان می‌دهد سناریوی تغییر Seed کنترل‌شده با موفقیت طی شده است.

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

مثال شماره 9: بررسی جدول مشخص

در این سناریو هدف آن است که «بررسی جدول مشخص» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

DBCC CHECKTABLE(N'master.sys.objects') WITH NO_INFOMSGS, ALL_ERRORMSGS;
خروجی نمونهتفسیر نتیجه
پیام سلامت یا جزئیات خطانتیجه مورد انتظار نشان می‌دهد سناریوی بررسی جدول مشخص با موفقیت طی شده است.

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

مثال شماره 10: نمایش وضعیت Cache بدون پاک‌سازی

در این سناریو هدف آن است که «نمایش وضعیت Cache بدون پاک‌سازی» به شکلی روشن و قابل بازتولید بررسی شود. Query زیر یک Batch کامل ارائه می‌دهد و می‌توان آن را پس از کنترل Context و مجوزها در محیط آزمایش اجرا کرد.

SELECT TOP (5) cp.usecounts, cp.size_in_bytes, st.text
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st
ORDER BY cp.usecounts DESC;
خروجی نمونهتفسیر نتیجه
پنج Plan پرکاربردنتیجه مورد انتظار نشان می‌دهد سناریوی نمایش وضعیت Cache بدون پاک‌سازی با موفقیت طی شده است.

پیش از هر DBCC پاک‌کننده Cache، مشاهده DMV و ثبت خط مبنا ضروری است. در محیط عملیاتی بهتر است ورودی، زمان اجرا، نام پایگاه داده و نتیجه نهایی نیز در یک لاگ ساختاریافته ثبت شود تا عیب‌یابی و ممیزی بعدی قابل اتکا باشد.

خطاهای رایج و روش پیشگیری

فرمان‌های پاک‌سازی Cache روی کل Instance اثر می‌گذارند. این خطا معمولاً زمانی رخ می‌دهد که نمونه آموزشی بدون بررسی Context یا Scope به Production منتقل می‌شود. افزودن Guard، نمایش مقصد و توقف سریع با THROW راه پیشگیری قابل اتکایی است.

گزینه‌های Repair می‌توانند موجب از دست‌رفتن داده شوند. برای کنترل این وضعیت، ورودی‌ها را پیش از اجرا اعتبارسنجی کنید و نتیجه مرحله حساس را با Query مستقل بسنجید. اگر عملیات قابل Rollback نیست، تأیید دوم و Backup معتبر ضروری است.

DBCC سنگین روی سامانه پرترافیک فشار IO ایجاد می‌کند. مستندسازی رفتار مورد انتظار و ثبت Error Number، Message، State و زمان اجرا باعث می‌شود تیم به جای آزمون و خطای تکراری، علت را بر اساس شواهد پیدا کند.

  • نام Database و Instance پیش از اجرا کنترل شود.
  • مجوز حساب اجرا با اصل کمترین دسترسی تعیین شود.
  • در مسیر CATCH وضعیت تراکنش و تنظیمات Session تعیین تکلیف شود.
  • Query کنترلی پس از عملیات، نتیجه واقعی را ثابت کند.

ملاحظات Performance و هم‌زمانی

CHECKDB را زمان‌بندی و Duration را پایش کنید. ارزیابی کارایی باید بر اساس Baseline و در بازه زمانی مشخص باشد؛ یک Execution Plan یا عدد تجمعی بدون مقایسه، برای تصمیم Production کافی نیست.

برای دیتابیس بزرگ از راهبرد Backup/Restore و CHECKDB روی سرور دیگر استفاده کنید. اگر فرمان روی IO، Transaction Log، Worker Thread یا قفل اثر دارد، Wait Type و Blocking هم‌زمان بررسی شود. افزایش سرعت یک Batch نباید با طولانی‌شدن توقف کاربران جبران شود.

فرمان‌های Cache را بدون سناریوی اندازه‌گیری اجرا نکنید. برای اجرای دوره‌ای، Duration، نتیجه، تعداد ردیف، حجم داده و خطاها در جدول تاریخچه ثبت شود. این تاریخچه ظرفیت‌سنجی و تشخیص تغییر رفتار پس از ارتقای نسخه را ممکن می‌کند.

بهترین روش‌ها

  1. هدف و Scope دستور DBCC را در ابتدای اسکریپت توضیح دهید.
  2. از نام Schema، نوع داده و تبدیل صریح استفاده کنید.
  3. مقادیر فارسی را با N و نوع nvarchar نگه دارید.
  4. برای خطای واقعی از TRY/CATCH و THROW استفاده کنید.
  5. تراکنش را کوتاه نگه دارید و XACT_STATE را در CATCH کنترل کنید.
  6. اسکریپت را تا حد ممکن قابل اجرای مجدد طراحی کنید.
  7. خروجی کنترلی و معیار پذیرش را در همان فایل قرار دهید.
  8. نسخه SQL Server و تفاوت محیط Cloud را پیش از استقرار بررسی کنید.

مقایسه DBCC با Dynamic Management Views برای پایش خواندنی و قابل Query باید بر اساس نیاز واقعی انجام شود. انتخاب فناوری یا فرمان صرفاً به دلیل آشنایی قبلی، ممکن است خوانایی، سازگاری یا قابلیت پشتیبانی آینده را کاهش دهد.

سؤالات متداول

سؤال 1: دستورات DBCC در SQL Server دقیقاً چه کاری انجام می‌دهد؟

دستورات DBCC مجموعه فرمان‌های Database Console Commands برای بررسی سازگاری، نگهداری، عیب‌یابی و مشاهده وضعیت داخلی SQL Server است. دامنه اثر آن باید پیش از اجرا شناخته شود و نمونه نخست در محیط آزمایش بررسی شود تا انتظار تیم از پیام، Result Set یا تغییر وضعیت Session دقیق باشد.

سؤال 2: برای شروع یادگیری DBCC چه پیش‌نیازی لازم است؟

آشنایی با Batch، Session، نوع داده، مجوز و تفاوت محیط توسعه و تولید کافی است. ابتدا Syntax و مثال‌های پایه را اجرا کنید، سپس رفتار خطا و تراکنش را با داده کوچک بسنجید و در پایان سراغ سناریوی سازمانی بروید.

سؤال 3: DBCC چه ارزش تجاری برای یک سامانه داده دارد؟

کاربرد درست آن می‌تواند زمان توقف، خطای انسانی و هزینه عیب‌یابی را کاهش دهد. ارزش واقعی زمانی ایجاد می‌شود که فرمان در Runbook، کنترل دسترسی، مانیتورینگ و آزمون بازیابی یا استقرار قرار گیرد، نه اینکه فقط یک دستور منفرد باشد.

سؤال 4: آیا استفاده حرفه‌ای از DBCC هزینه پروژه SQL Server را کم می‌کند؟

بله، اگر همراه استاندارد کدنویسی، بازبینی و پایش باشد. کاهش اجرای اشتباه، کوتاه‌شدن زمان تشخیص رخداد و قابل تکرار شدن عملیات، هزینه پشتیبانی را پایین می‌آورد؛ اما خودکارسازی بدون Guard می‌تواند ریسک را بیشتر کند.

سؤال 5: تفاوت DBCC با Dynamic Management Views برای پایش خواندنی و قابل Query چیست؟

DBCC برای مجموعه فرمان‌های Database Console Commands برای بررسی سازگاری، نگهداری، عیب‌یابی و مشاهده وضعیت داخلی SQL Server است. گزینه تخصصی‌تری است، درحالی‌که Dynamic Management Views برای پایش خواندنی و قابل Query دامنه یا هدف متفاوتی دارد. انتخاب باید بر اساس نیاز به سازگاری نسخه، اثر روی Session، مدیریت خطا، امکان Rollback و نتیجه قابل مشاهده انجام شود.

سؤال 6: چه زمانی برای پیاده‌سازی DBCC از خدمات مشاوره SQL Server استفاده کنیم؟

اگر فرمان بخشی از مهاجرت، بازیابی، نگهداری Production، تغییر امنیتی یا عملیات دارای SLA است، بازبینی متخصص ارزشمند است. مشاور می‌تواند پیش‌نیاز، اسکریپت برگشت، مانیتورینگ، تست بار و معیار پذیرش را قبل از اجرا مشخص کند.

سؤال 7: رایج‌ترین خطا هنگام کار با DBCC چیست؟

فرمان‌های پاک‌سازی Cache روی کل Instance اثر می‌گذارند. همچنین بی‌توجهی به Context، مجوز و Scope باعث می‌شود نمونه‌ای که در آزمایش موفق بوده در Production رفتار دیگری نشان دهد. راه‌حل، Guard صریح، TRY/CATCH و ثبت ورودی‌های واقعی است.

سؤال 8: اثر DBCC بر Performance چگونه ارزیابی می‌شود؟

CHECKDB را زمان‌بندی و Duration را پایش کنید. پیش و پس از اجرا باید Duration، CPU، IO، Waitها، Blocking و حجم Log متناسب با موضوع اندازه‌گیری شود. یک Snapshot منفرد کافی نیست و مقایسه با Baseline دوره مشابه نتیجه معتبرتری می‌دهد.

سؤال 9: بهترین روش استفاده از DBCC چیست؟

بهترین روش این است که هدف، Context، مجوز، اثر تراکنشی، Timeout و مسیر بازگشت مستند شوند. اسکریپت باید قابل اجرای مجدد یا دست‌کم دارای کنترل جلوگیری از اجرای دوباره باشد و نتیجه نهایی را به‌صورت قابل ممیزی گزارش کند.

سؤال 10: DBCC با کدام نسخه‌های SQL Server سازگار است؟

دامنه DBCC وسیع است و برخی فرمان‌ها مستند، برخی منسوخ و برخی صرفاً برای پشتیبانی داخلی هستند؛ فقط فرمان مستند استفاده شود. علاوه بر شماره نسخه، Compatibility Level، Edition، سیستم‌عامل، سرویس ابری و مجوز حساب اجرا نیز باید در محیط مقصد آزموده شود؛ مستندات همان نسخه مرجع نهایی تصمیم است.

سؤالات مصاحبه SQL Server

پرسش مصاحبه 1: در مصاحبه چگونه کاربرد DBCC را توضیح دهیم؟

ابتدا هدف را در یک جمله بگویید، سپس Scope اثر، یک مثال واقعی، خطر اصلی و روش کنترل آن را شرح دهید. پاسخ حرفه‌ای فقط Syntax نیست و باید نشان دهد اثر دستور روی Session، Transaction، IO یا بازیابی را می‌فهمید.

پرسش مصاحبه 2: چه نکته‌ای پاسخ مبتدی و حرفه‌ای درباره DBCC را جدا می‌کند؟

پاسخ حرفه‌ای درباره خطا، مجوز، قابلیت اجرای مجدد، مشاهده‌پذیری و تفاوت محیط آزمایش و Production صحبت می‌کند. همچنین جایگزین مناسب و دلیل انتخاب را بیان می‌کند.

پرسش مصاحبه 3: اگر اجرای DBCC شکست بخورد چه می‌کنید؟

ابتدا Error Number، Message، State، Context، ورودی و وضعیت تراکنش ثبت می‌شود. سپس بدون تکرار کورکورانه، علت بررسی و بر اساس Runbook مسیر Rollback یا Retry کنترل‌شده اجرا می‌شود.

پرسش مصاحبه 4: چگونه DBCC را برای Production آماده می‌کنید؟

حداقل مجوز، Guard مقصد، ورودی پارامتری، Timeout، TRY/CATCH، ثبت نتیجه، آزمون روی داده نماینده و تأیید مالک سرویس لازم است. برای عملیات مدیریتی، پنجره اجرا و برنامه بازگشت نیز تعیین می‌شود.

پرسش مصاحبه 5: چه معیارهایی موفقیت DBCC را ثابت می‌کنند؟

معیار باید قابل اندازه‌گیری باشد: نتیجه داده، وضعیت Session یا Database، زمان اجرا، نبود خطای جدید، اثر قابل قبول بر IO و Blocking و ثبت خروجی کنترلی. معیار پذیرش پیش از اجرا نوشته می‌شود.

چک‌لیست نهایی

  • Context پایگاه داده و نام Instance تأیید شد.
  • Syntax و ورودی‌ها در محیط آزمایش اجرا شدند.
  • مجوزها و اثر روی Session یا Database مشخص است.
  • مسیر خطا، Rollback و Timeout بررسی شده است.
  • اثر کارایی با Baseline مقایسه می‌شود.
  • خروجی کنترلی و لاگ نهایی تعریف شده است.
  • برای عملیات حساس، Backup و تأیید مالک سرویس وجود دارد.
  • اسکریپت و نتیجه اجرا نسخه‌بندی و مستند می‌شوند.

جمع‌بندی

دستورات DBCC زمانی به‌درستی استفاده شده است که علاوه بر نتیجه فنی، ریسک عملیاتی آن هم مدیریت شود. در این مقاله Syntax، پارامترها، ده سناریوی مستقل، خروجی نمونه، خطاها، Performance، Best Practice و پرسش‌های مصاحبه بررسی شد تا بتوانید فرمان را آگاهانه در Query، Procedure، Job یا Runbook به کار ببرید.

برای مرور ارتباط DBCC با دیگر موضوع‌های این مجموعه، به مقاله مادر دستورات کاربردی SQL Server بازگردید. پیش از استفاده در Production، نمونه مرتبط را با نام‌ها، مسیرها، مجوزها و SLA واقعی سازمان خود تطبیق دهید.

 

0 نظر

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

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

حرف 500 حداکثر

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620