Introduction
A common problem with newly built SQL Server or acquired existing SQL Server is server settings or effectively lack of custom setttings with SQL Server running defaults.
Problem
Apply best practices to server level configurations
Solution
Regular Schedule: Every day at 8AM

Solution: Native T-SQL

- Optimize server TempDB database files
- Change server authentication to a Mixed mode
- Enable server SA
- Enable server DB Mail
- Add server Job Operators
- Add server SQL Alerts
- Enable server Agent Notification
- Configure server SQL Server Error Logs
- Find server Optimal Custom Backup Configs
- Change server Max Degree of Parallelism (MAXDOP)
- Change server Max Memory
- Change server Optimize for adhoc workloads
- Change server Cost Threshold for Parallelism (CTFP)
- Enable server Remote Dedicate Administrator Connection (”DAC”)
- Change server Backup Checksum Default
- Change server Backup Compression Default
- Enable server Common Language Runtime (aka “CLR”)
- Enable server trace flags
- Change server PowerShell Jobs default
- Disable server xp_cmdshell
- Test server (all) Linked Servers
- Change server Remote Query Timeout
- Change server Min Memory
- Change server blocked process threshold
- Change default login language
- Check server Instant File Initialization (aka “IFI”)
- Enable server PolyBase
- Check server recommended VM resources
- Check server for database files stored on a C drive
- Check server for encrypted connection (TLS)
- Check server Power Plan
- Check server Lock Pages in Memory (aka “LPIM”) setting
- Find server Maintenance Plans
- Collect server estimated tempdb for checkdb
- Change server linked server collation
- Change server ADR cleaner
- Change server lightweight pooling
- Change server priority boost
- Change server soft-NUMA
- Change server default database file location
- Collect server TLS info
Checks procedure versioning
DECLARE @procedure_version NVARCHAR(10);
DECLARE @schema_name NVARCHAR(50);
DECLARE @procedure_name NVARCHAR(50);
SET @schema_name=N'bestpractices'
SET @procedure_name=N'usp_optimize_server_tempdb'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_authentication'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_enable_server_sa'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_setup_server_db_mail'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_add_server_job_operators'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_add_server_sql_alerts'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_enable_server_agent_notification'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_limit_server_error_logs'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_limit_server_error_logs'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_find_server_optimal_backup_configs'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_optimize_server_database_backups'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_max_dop'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_max_memory'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_optimize_for_adhoc_workloads'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_cost_threshold_for_parallelism'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_remote_dac'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_backup_checksum'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_backup_compression'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_clr'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_trace_flags'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_adjust_server_sub_system_default_max_worker_threads'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_xp_cmdshell'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_test_server_linked_servers'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_remote_query_timeout'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_min_memory'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_blocked_process_threshold'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_change_server_login_default_language'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_check_server_ifi'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_enable_server_polybase'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_check_server_required_resources'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_check_server_database_file_drive'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]
SET @procedure_name=N'usp_check_server_encrypted_connection'
EXEC DBA.maintenance.usp_locate_procedure_version @schema_name=@schema_name, @procedure_name=@procedure_name
, @version_keyword=N'DECLARE @Version VARCHAR(10)',@procedure_version=@procedure_version OUTPUT SELECT @procedure_name as [procedure_name], @procedure_version as [version_number]