我需要将数据库定义为查询中的变量,如下所示:
insert into Database1.dbo.Table1
select * from Database2.dbo.Table1
就我而言,所有数据库都具有相同的架构。
我当然可以使用动态sql,但这是否是一种具有如下语法的方法:
insert into Database1.dbo.Table1
select * from @ChosenDatabase.dbo.Table1
?
谢谢
最佳答案
你想要实现的目标是不可能的;您必须使用动态 SQL :
DECLARE @SQLQuery varchar(300)
DECLARE @TableName varchar(100)
SET @TableName = ChosenDatabase.dbo.Table1
SET @SQLQuery = 'INSERT INTO Database1.dbo.Table1 SELECT * FROM ' + @TableName
EXEC(@SQLQuery);
关于sql-server - 如何在分布式查询中参数化数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37786510/