我正在尝试使用变量动态更改数据库,但无法做到这一点。 以下是脚本
set @query='Use {DBNAME}'
DECLARE @SQL_SCRIPT VARCHAR(MAX)
SET @SQL_SCRIPT = REPLACE(@query, '{DBNAME}', @DatabaseName)
EXECUTE (@SQL_SCRIPT)
在此脚本之前,我已将变量@DatabaseName设置为差异数据库名称
答案 0 :(得分:1)
您的脚本没有任何问题。 EXECUTE
正在为数据库设置新的上下文,但是您还需要将其他代码附加到动态T-SQL语句中。
DECLARE @SQL_SCRIPT VARCHAR(MAX)
DECLARE @DatabaseName SYSNAME
DECLARE @query NVARCHAR(MAX)
SET @DatabaseName = 'master'
set @query='Use {DBNAME}; select db_Name();'
SET @SQL_SCRIPT = REPLACE(@query, '{DBNAME}', @DatabaseName)
EXECUTE (@SQL_SCRIPT);
这将给您master
。因此,您可以更改上下文,只需在同一T-SQL语句中添加其余代码即可。
此外,您不允许在GO
/ EXECUTE
中使用sp_executesql
。