Tsql 动态数据库名称和模式/所有者分配

Tsql 动态数据库名称和模式/所有者分配,tsql,sql-server-2000,Tsql,Sql Server 2000,我需要连续几次从另一个表更新一个表。为了使这个脚本更易于人们使用,我希望能够动态地引用它。大概是这样的: declare @databasename sysname set @databasename = 'm2mdata01.dbo' select * from @databasename.mytable 这不管用。关于我如何做到这一点,有什么建议吗 在SQL语句中不能使用FROM子句中的变量。您必须使用动态SQL,例如: declare @databasename sysname set

我需要连续几次从另一个表更新一个表。为了使这个脚本更易于人们使用,我希望能够动态地引用它。大概是这样的:

declare @databasename sysname
set @databasename = 'm2mdata01.dbo'

select * from @databasename.mytable

这不管用。关于我如何做到这一点,有什么建议吗

在SQL语句中不能使用FROM子句中的变量。您必须使用动态SQL,例如:

declare @databasename sysname
set @databasename = 'm2mdata01.dbo'
EXEC ('select * from ' + @databasename + '.mytable')

在SQL语句中不能使用FROM子句中的变量。您必须使用动态SQL,例如:

declare @databasename sysname
set @databasename = 'm2mdata01.dbo'
EXEC ('select * from ' + @databasename + '.mytable')

还有其他选择吗?如果我必须编辑代码才能做到这一点,那将是一个巨大的混乱。如果数据库是SQL脚本的唯一动态组件,您可以利用
USE database
命令。但是,您也不能将变量用于它。但是,您可以在运行语句之前找到一种设置数据库的方法。还有其他选项吗?如果我必须编辑代码才能做到这一点,那将是一个巨大的混乱。如果数据库是SQL脚本的唯一动态组件,您可以利用
USE database
命令。但是,您也不能将变量用于它。但是,您可能会找到一种在运行语句之前设置数据库的方法。