我需要在当前数据库(ALTER DATABASE...
)上运行更新脚本,但不能使用隐式名称。是否可以使用某些函数获取当前的db名称并在ALTER DATABASE
内使用(Sql Server 2005及更高版本)?我尝试使用db_name()
,但无效。
select db_name();
有效
ALTER DATABASE db_name() ...
不起作用
答案 0 :(得分:41)
如果你改变当前的数据库,实际上更像这样的东西可能会好一些:
ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 90
答案 1 :(得分:18)
您需要使用类似
的内容declare @dbname varchar(100)
set @dbname=quotename(db_name())
exec('alter database '+@dbname+' ...');
或..甚至更简单
set @sql='alter database '+quotename(db_name())+' ...';
exec(@sql)
答案 2 :(得分:0)
试试这个
DECLARE @DBName sysname;
SET @DBName = (SELECT db_name());
DECLARE @SQL varchar(1000);
SET @SQL = 'ALTER DATABASE '+@DBName+' .......'
拉吉