sql-server - 如何在分布式查询中参数化数据库

标签 sql-server sql-server-2008-r2

我需要将数据库定义为查询中的变量,如下所示:

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/

相关文章:

sql - 遍历表和字段列表并将它们混合

sql - 我可以使用过滤索引来查询 "recently modified"行吗

sql - 如何在sql server中水平旋转表

sql - 存储过程动态 T-SQL 查询无法正常工作

sql - 获取SQL中单词的几个字母

c# - 如何在 C# 中违反约束的异常中获取列名称

sql-server - LINQPad 6 连接到 SQL Server 2019 Docker 在预登录握手时出现错误

sql-server - 如何在 SQL Server 2008 Express 中使用 SQL Server Management Studio 启用全文索引?

c# - sql 选择顶部 X 到 X+N

c# - 我应该如何从 Entity Framework 4.1 中的存储过程返回一个 int?