【问题标题】:Create dynamic SQL command to include 'USE DATABASE xyz'创建动态 SQL 命令以包含“使用数据库 xyz”
【发布时间】:2019-02-21 18:33:29
【问题描述】:

我有一个扩展的存储过程,它备份 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];'不是有效的标识符。

非常感谢任何建议。

【问题讨论】:

标签: sql-server tsql dynamic-sql


【解决方案1】:

试试:

DECLARE @tempDBName VARCHAR(255)
DECLARE @sqlc NVARCHAR(MAX)

SET @tempDBName = 'master'
SET @sqlc = N'USE ' + QUOTENAME(@tempDBName) + ' ;'

EXEC (@sqlc);

注意@sqlc 如何在括号中...愚蠢的 T-SQL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多