ALTER当前数据库不使用其名称

时间:2013-01-11 10:16:06

标签: sql-server sql-server-2005

我需要在当前数据库(ALTER DATABASE...)上运行更新脚本,但不能使用隐式名称。是否可以使用某些函数获取当前的db名称并在ALTER DATABASE内使用(Sql Server 2005及更高版本)?我尝试使用db_name(),但无效。

select db_name();有效

ALTER DATABASE db_name() ...不起作用

3 个答案:

答案 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+' .......'

拉​​吉