چک لیست صبحگاهی DBA راهنمای جامع حفظ سلامت و عملکرد پایگاه داده SQL Server

چک لیست صبحگاهی DBA: راهنمای جامع حفظ سلامت و عملکرد پایگاه داده SQL Server

هر مدیر پایگاه داده (DBA) حرفه‌ای می‌داند که نظارت منظم و پیشگیرانه، کلید حفظ پایداری و عملکرد بهینه سیستم‌های SQL Server است. یک چک لیست صبحگاهی دقیق، به شما کمک می‌کند تا به سرعت وضعیت سلامت محیط پایگاه داده را ارزیابی کرده و قبل از تبدیل شدن مشکلات کوچک به بحران‌های بزرگ، آن‌ها را شناسایی و برطرف کنید. این مقاله راهنمایی گام به گام برای انجام بررسی‌های ضروری روزانه را ارائه می‌دهد تا اطمینان حاصل شود که پایگاه داده SQL Server شما روان و کارآمد عمل می‌کند.

بررسی وضعیت Jobهای SQL Server Agent

Jobهای SQL Server Agent برای اتوماسیون وظایف حیاتی مانند پشتیبان‌گیری، نگهداری شاخص‌ها و پاکسازی لاگ‌ها ضروری هستند. اولین قدم در هر چک لیست صبحگاهی، اطمینان از تکمیل موفقیت‌آمیز تمام Jobها است.

برای بررسی وضعیت Jobها در 24 ساعت گذشته و شناسایی Jobهای ناموفق، می‌توانید از کوئری زیر استفاده کنید:


        SELECT
            j.name AS JobName,
            jh.run_date,
            jh.run_time,
            CASE jh.run_status
                WHEN 0 THEN 'Failed'
                WHEN 1 THEN 'Succeeded'
                WHEN 2 THEN 'Retry'
                WHEN 3 THEN 'Canceled'
                WHEN 4 THEN 'In Progress'
            END AS RunStatus,
            jh.message
        FROM
            msdb.dbo.sysjobs j
        JOIN
            msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id
        WHERE
            jh.run_date >= CONVERT(INT, CONVERT(VARCHAR(8), GETDATE() - 1, 112))
            AND jh.step_id = 0 -- Overall job status
            AND jh.run_status  1 -- Only show non-successful jobs
        ORDER BY
            jh.run_date DESC, jh.run_time DESC;
    

این کوئری تمام Jobهایی که در 24 ساعت گذشته اجرا شده‌اند و وضعیت آن‌ها غیر از “موفق” بوده است را نمایش می‌دهد. بررسی دقیق پیام خطا (jh.message) برای ریشه‌یابی مشکل ضروری است.

بررسی Log خطای SQL Server

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

برای مشاهده لاگ خطای SQL Server، می‌توانید از دستور زیر استفاده کنید:


        EXEC xp_readerrorlog;
    

این دستور لاگ فعلی را نمایش می‌دهد. برای مشاهده لاگ‌های آرشیو شده یا فیلتر کردن بر اساس کلمات کلیدی خاص (مانند “error” یا “failure”)، می‌توانید پارامترهای بیشتری را به xp_readerrorlog اضافه کنید.

نظارت بر فضای دیسک

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

برای بررسی فضای آزاد دیسک در درایوهای مرتبط با SQL Server، می‌توانید از کوئری زیر استفاده کنید:


        EXEC xp_cmdshell 'wmic logicaldisk get Caption,FreeSpace,Size /value';
    

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

بررسی وضعیت پشتیبان‌گیری‌ها (Backups)

پشتیبان‌گیری‌های موفق، سنگ بنای هر استراتژی بازیابی فاجعه (DR) هستند. تأیید روزانه تکمیل موفقیت‌آمیز پشتیبان‌گیری‌های کامل، تفاضلی و لاگ تراکنش بسیار مهم است.

برای بررسی تاریخ آخرین پشتیبان‌گیری‌های هر پایگاه داده، از کوئری زیر استفاده کنید:


        SELECT
            sdb.name AS DatabaseName,
            MAX(CASE WHEN bs.type = 'D' THEN bs.backup_finish_date ELSE NULL END) AS LastFullBackup,
            MAX(CASE WHEN bs.type = 'I' THEN bs.backup_finish_date ELSE NULL END) AS LastDifferentialBackup,
            MAX(CASE WHEN bs.type = 'L' THEN bs.backup_finish_date ELSE NULL END) AS LastLogBackup
        FROM
            sys.databases sdb
        LEFT JOIN
            msdb.dbo.backupset bs ON sdb.name = bs.database_name
        GROUP BY
            sdb.name
        ORDER BY
            sdb.name;
    

این کوئری تاریخ آخرین پشتیبان‌گیری کامل (Full)، تفاضلی (Differential) و لاگ تراکنش (Log) را برای هر پایگاه داده نمایش می‌دهد و به شما امکان می‌دهد هرگونه تأخیر یا عدم موفقیت در پشتیبان‌گیری را به سرعت تشخیص دهید.

نظارت بر عملکرد (Performance Monitoring)

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

  • مصرف CPU: آیا CPU به طور مداوم بالا است؟ این می‌تواند نشانه‌ای از کوئری‌های ناکارآمد یا حجم کاری زیاد باشد.
  • مصرف حافظه: آیا SQL Server حافظه کافی دارد و آیا فشار حافظه (Memory Pressure) وجود دارد؟
  • I/O دیسک: آیا عملیات خواندن/نوشتن دیسک غیرعادی بالا است که می‌تواند نشانه‌ای از گلوگاه‌های دیسک باشد؟

برای مشاهده برخی از این معیارهای عملکردی، می‌توانید از Dynamic Management Views (DMVs) مانند sys.dm_os_performance_counters استفاده کنید.

بررسی وضعیت Replication (در صورت وجود)

اگر از SQL Server Replication استفاده می‌کنید، اطمینان از اینکه همه Agentها به درستی در حال اجرا هستند و هیچ تأخیر قابل توجهی در توزیع داده‌ها وجود ندارد، حیاتی است.

برای بررسی وضعیت Replication Agentها، می‌توانید از کوئری زیر در پایگاه داده msdb استفاده کنید:


        SELECT
            agent.name AS AgentName,
            agent.last_run_date,
            agent.last_run_time,
            CASE agent.last_run_outcome
                WHEN 1 THEN 'Succeeded'
                WHEN 2 THEN 'Failed'
                WHEN 3 THEN 'In Progress'
                WHEN 4 THEN 'Idle'
            END AS LastRunStatus
        FROM
            msdb.dbo.MSreplication_agents agent
        WHERE
            agent.last_run_outcome  1; -- Show only agents that did not succeed last run
    

این کوئری Agentهای Replication را که آخرین اجرای آن‌ها موفقیت‌آمیز نبوده است، نمایش می‌دهد.

بررسی وضعیت Database Mail

اگر SQL Server شما از Database Mail برای ارسال هشدارها یا گزارش‌ها استفاده می‌کند، اطمینان از عملکرد صحیح آن بسیار مهم است.

برای بررسی وضعیت صف ایمیل و پیام‌های معلق یا ناموفق، از کوئری‌های زیر استفاده کنید:


        -- Check mail queue status
        SELECT event_type, items_in_queue, last_activity
        FROM msdb.dbo.sysmail_queue_stats;

        -- Check for failed mail items
        SELECT
            event_type,
            log_date,
            description
        FROM msdb.dbo.sysmail_event_log
        WHERE event_type = 'error' OR event_type = 'warning'
        ORDER BY log_date DESC;
    

این کوئری‌ها وضعیت صف ایمیل و هرگونه خطا یا هشدار ثبت شده در لاگ Database Mail را نمایش می‌دهند.

نتیجه‌گیری

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

 

من علی دستجردی‌ام؛ عاشق کار با دیتا، از SQL Server تا بیگ‌دیتا و هوش مصنوعی. دغدغه‌ام کشف ارزش داده‌ها و به‌اشتراک‌گذاری تجربه‌هاست. ✦ رزومه من: alidastjerdi.com ✦

عضویت
منو باخبر کن!!!
guest
نام
ایمیل

0 دیدگاه
Inline Feedbacks
دیدن تمامی کامنتها

فوتر سایت

ورود به سایت

sqlyar

هنوز عضو نیستید؟

ورود به سایت

هنوز تبت نام نکردید ؟