我需要运行像
这样的脚本EXEC sp_dbcmptlevel AdventureWorks, 100;
GO
现在我想要一个使用我连接的数据库的通用版本,是否可以在T-SQL中使用?
这样的东西,但这不起作用:
EXEC sp_dbcmptlevel DBNAME(), 100;
GO
它当然不起作用,因为返回了一个字符串,我想要返回数据库引用...是否可能?
注意当然我可以从客户端应用程序和使用参数(如(Delphi示例)
)执行此操作EXEC sp_dbcmptlevel :CurrentDatabase, 100;
GO
并在运行时替换它,但我想只使用T-SQL代码。
答案 0 :(得分:2)
您可以使用EXEC方法。
declare @x nvarchar(2000)
set @x = 'alter database [' + DB_NAME() + '] set compatibility_level = 100;'
exec (@x)
BOL 2008声明不推荐使用sp_dbcmptlevel,而是使用ALTER DATABASE。我不知道2005年是否支持这个。
答案 1 :(得分:1)
你可以尝试
DECLARE @dbname AS nvarchar(500)
set @dbname = db_name()
exec sp_dbcmptlevel @dbname, 100;
您的服务器必须支持您尝试设置的兼容级别。
您还应该查看此http://msdn.microsoft.com/en-us/library/ms178653.aspx