Tuesday, 3 December 2013

DBA Checklist

To stay safe, a DBA of the SQL Server is required to be familiar with all the critical aspects. After knowing these key aspects he can create an environment in which nothing would be lost before the news or generating alerts.

Following is the basic SQL Server’s DBA Checklist and I found very detailed Checklist on Simple-Talk

  • Connectivity:
1.    Check all SQL Server services are running
2.    Polls all servers ‘select @@servername’ every 10 minutes to check server availability
3.    Make sure each database is available and accessible both by logging in via user applications, as well as running test scripts.

  • Backups:
1.    Check databases full backup(Get list of not recently backed up databases in last 7 days)
2.    Log backups
3.    Archiving
4.    Offsite storage

  • Events:
1.    Check errors in your SQL Server Error Log and operating system event viewer and for errors or warnings.
2.  All database logs
3.    Application logs
4.    System logs
5.    Agent history
6.    Device logs
7.    NIC logs etc. Investigate any job failures
8.    Keep a log of any configuration changes you make to the servers.
9.    CRUD (Create, Read, Update, Delete) statements about database, table, view, UDF, triggers, stored procedures.

  • Processes:
1.    Check that all required processes on the server are running
2.    Count of total SQL Agent Jobs and successfully run are equal.
3.    Make sure that SQL Mail, SQL Agent Mail, Database Mail or xp_SMTP_Sendmail is working correctly
4.    Export and then Delete all details of backup and restore processes created before a specific time
5.    Replication (If any )

  • Integrity:
1.    Perform all database and server integrity checks; look for objects that break rules
(DBCC commands dbcc checkdb / dbreindex / checkcatalog / inputbuffer, sp_who, sp_kill)


  • Indexes:
1.    Check on indexes to see if they are being used
2.    Need re-creation or modification in indexes are required
3.    If any are missing

  • Volumetric:
1.    Check resources on the server such as files sizes (running out of space on any of disks)
2.    Disk space, CPU usage and memory (running low on server memory for SQL Server)
3.    Monitor growth
4.    Enough space available for all types of backup files

  • Performance:
1.    Check application performance, long running or "hung" processes, especially those tied to a SQL Agent job
2.    Regular monitor Performance Counters
3.    Regular check on Blocking issues
4.     Count of Total requests  processing ( Total Batch Count)
5.    To avoid the AUTOGROWTH of the data files during the busiest time, manually increase their size.
6.    Performance statistics, using the Permanence tool; research and resolve any issues.
7.    For best I/O performance, locate the database files (.mdf) and log files (.ldf) on separate volumes on your server to isolate random writes from sequential ones
8.    “Auto create statistics” and “auto update statistics”  options should be on for all Databases in other case must manually update the statistics.
9.    If application supports snapshot isolation level, this will result in a Temp DB contention so it is recommended to divide the tempdb database into multiple files based on the number of CPU cores and to place it on a separate drive.

  • Procedures:
1.    Check all Disaster Recovery Plans

  • Security:
1.    Look for security policy violations(security plan according to needs)
2.    SQL Agent Job modifications, any schedule modification can have negative impact. Use a report that shows which jobs were modified and when, unfortunately it does not reveal "who",
3.    Count to Total connections to SQL Server instance