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

mar*_*osh 16 sql-server sql-server-2005

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

select db_name(); 作品

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

Rus*_*s B 44

实际上,如果你改变当前的数据库,更像这样的东西可能会好一些:

ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 90

  • 这是最好的答案,但请注意,这仅适用于SQL Server 2012及更高版本.原始问题标记为SQL Server 2005.请参阅http://stackoverflow.com/questions/19238834/alter-database-current-exception (6认同)
  • @AdrianEdwards,是的,但它也是谷歌搜索时的第一个命中,`sql server alter database current database`.:) (2认同)

Ric*_*h S 18

你需要使用类似的东西

declare @dbname varchar(100)
set @dbname=quotename(db_name())
exec('alter database '+@dbname+' ...');
Run Code Online (Sandbox Code Playgroud)

或者......甚至更简单

set @sql='alter database '+quotename(db_name())+' ...';
exec(@sql)
Run Code Online (Sandbox Code Playgroud)