T-SQL(SQL SERVER) - 重命名数据库错误消息

时间:2013-11-21 22:55:38

标签: sql sql-server sql-server-2008 tsql

我正在尝试重命名我的数据库,但我不熟悉语法。我尝试了两种不同的东西,但得到以下错误信息......

方法1:

DECLARE @old varchar(100)
DECLARE @new varchar(100)
SET @old = 'ver.1'
SET @new = 'ver.2'

DECLARE @query varchar(max)
set @query = 'ALTER DATABASE @old MODIFY NAME = @new'
exec @query

错误:无法找到存储过程'ALTER DATABASE @old MODIFY NAME = @new'。


方法2:

DECLARE @old varchar(100)
DECLARE @new varchar(100)
SET @old = 'ver.1'
SET @new = 'ver.2'

ALTER DATABASE @old MODIFY NAME = @new

错误:@old

附近的语法不正确

2 个答案:

答案 0 :(得分:1)

Stop using exec for dynamic SQL; use sp_executesql。此外,您不能以这种方式内联参数化ALTER DATABASE的参数 - 您需要使用字符串连接。最后,因为您选择在数据库名称(.)中使用非法字符,所以需要使用QUOTENAME转义这些字符。

DECLARE @old varchar(100) = 'ver.1';
DECLARE @new varchar(100) = 'ver.2';

DECLARE @query NVARCHAR(MAX) = N'ALTER DATABASE ' 
  + QUOTENAME(@old) + ' MODIFY NAME = ' + QUOTENAME(@new) + ';';

EXEC sp_executesql @query;

答案 1 :(得分:0)

我们也可以使用sp_renamedb重命名数据库。

EXEC sp_renamedb 'old_name' , 'new_name'