Setting the database to the right compatibility level is very important as it can have negative impact on the performance and behavior of your databases. I’ve seen many customers upgrade their SQL Servers from older versions to newer but forget to upgrade the compatibility of their databases. This means that even though you have an upgraded version of SQL Server, your database cannot benefit from any new or enhanced features of SQL Server since your database is running on an old compatibility level.
Incompatible database could also lead to inefficient query plans. Therefore, it is important that you upgrade the compatibility of databases right after the upgrade or right after you restore the database from older version to a newer version.
This script can help scan thru all the databases and provide you with a list of current and recommended database compatibility level.
CREATE Procedure [dbo].[SQLOPS_dbCompatibility] (@cmd Varchar(20)=null) as --Author: Saleem Hakani (Http://sqlcommunity.com) --Description: This procedure will check for database level compatibility and will report any anomoly. SET NOCOUNT ON SET ANSI_WARNINGS OFF If (@cmd is null or @cmd='Help' or @cmd <> 'Execute') Begin Print 'SQLOPS_dbCompatibility: Checks for database compatibility and reports if the database compatibility is not configured correctly' Print '==================================================================' Print 'Author: Saleem Hakani (Http://sqlcommunity.com)' Print ' ' Print 'Syntax: Exec SQLOPS_dbCompatibility <@cmd>;' Print '@cmd can be ''HELP'' (To get help on this stored procedure) or it can be ''EXECUTE'' (to execute this stored procedure)' Print ' ' Print 'Example: To get help about this stored procedure' Print 'Exec SQLOPS_dbCompatibility ''Help'';' Print ' ' Print 'Example: To execute this stored procedure' Print 'Exec SQLOPS_dbCompatibility ''Execute'';' Print ' ' Return End If (@Cmd='Execute') Begin Declare @SQLVersion int SELECT @SQLVersion = CONVERT(int, (@@microsoftversion / 0x1000000) & 0xff); BEGIN DECLARE @DB_Compat int SELECT @DB_Compat = COUNT([compatibility_level]) FROM master.sys.databases (NOLOCK) WHERE [compatibility_level] <> @SQLVersion * 10; IF @DB_Compat >= 1 BEGIN Select 'Compatibility_Level' AS [Information], name AS [Database_Name], Ltrim(str([compatibility_level]))+' (Please upgrade to '+ltrim(str(@SQLVersion))+'0)' AS [Compatibility_Level] FROM master.sys.databases (NOLOCK) WHERE [compatibility_level] <> @SQLVersion * 10; END ELSE BEGIN SELECT 'Compatibility level for all databases' AS [Check], '[OK]' AS [Results] END END End GO
Recent Comments