我正在尝试重命名我的数据库,但我不熟悉语法。我尝试了两种不同的东西,但得到以下错误信息......
方法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
附近的语法不正确答案 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'