数据库恢复后如何调整兼容级别?

时间:2017-01-09 08:14:19

标签: sql-server compatibility-level

我们有一些SQL服务器。不同的版本,即2005年,2008年,2012年,2014年。(我们计划很快离开2005年)。 很多时候,我们的DBA只会备份和恢复一个"模板"客户数据库创建一个" new"已恢复模板中的数据库。

问题是恢复后兼容级别有时为80(或90)。 对于新的SQL功能,我们的新SQL脚本至少要求90级。

所以,我写了一个脚本,它将检查Context数据库兼容级别并调整该服务器上的目标客户端数据库。

master

我的问题是,这种方法是否正确?我应该检查DECLARE @sys_compatibility_level tinyint, @db_compatibility_level tinyint; SELECT @sys_compatibility_level = compatibility_level FROM sys.databases WHERE name = 'master'; SELECT @db_compatibility_level = compatibility_level FROM sys.databases WHERE name = DB_NAME(); DECLARE @db_name nvarchar(128) = DB_NAME(); IF @db_compatibility_level < @sys_compatibility_level BEGIN -- EXEC dbo.sp_dbcmptlevel @dbname=@db_name, @new_cmptlevel=@sys_compatibility_level -- deprecated EXEC('ALTER DATABASE ' + @db_name + ' SET COMPATIBILITY_LEVEL = ' + @sys_compatibility_level) END db还是master db?盲目地将客户端数据库设置为主/模型的存在缺点吗?

1 个答案:

答案 0 :(得分:1)

由于您正在恢复数据库,因此它们保留了旧的兼容性级别。新创建的数据库将继承模型数据库的兼容性级别。

所以将恢复数据库的兼容性级别更改为您希望的级别,而不是基于型号/母版..

将模型数据库兼容性级别更改为您选择的级别,因此新的将继承