我有一个扩展的存储过程,该过程对TDE加密的数据库进行备份,用新名称恢复它,解密恢复的数据库,将其设置为简单模式,然后需要缩小日志文件。
当我到达需要发出USE DATABASE xyz;
的那一部分时,我已经在变量中有了临时数据库名称,因此尝试使用以下代码
DECLARE @tempDBName VARCHAR(255)
DECLARE @sqlc NVARCHAR(MAX)
SET @tempDBName = 'xyz_temp'
SET @sqlc = N'USE ' + QUOTENAME(@tempDBName) + ' ;'
EXEC @sqlc
但我收到此错误
名称'USE [xyz_temp];'不是有效的标识符。
任何建议都将不胜感激。
答案 0 :(得分:0)
尝试:
DECLARE @tempDBName VARCHAR(255)
DECLARE @sqlc NVARCHAR(MAX)
SET @tempDBName = 'master'
SET @sqlc = N'USE ' + QUOTENAME(@tempDBName) + ' ;'
EXEC (@sqlc);
请注意@sqlc放在括号中的方式...愚蠢的T-SQL