想要使用SQL Server中的变量动态更改数据库,该怎么办?

时间:2018-07-30 05:12:52

标签: sql-server

我正在尝试使用变量动态更改数据库,但无法做到这一点。 以下是脚本

set @query='Use {DBNAME}'

DECLARE @SQL_SCRIPT VARCHAR(MAX)

SET @SQL_SCRIPT = REPLACE(@query, '{DBNAME}', @DatabaseName)
EXECUTE (@SQL_SCRIPT)

在此脚本之前,我已将变量@DatabaseName设置为差异数据库名称

1 个答案:

答案 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