Sql server 查询中的大型sql参数集

Sql server 查询中的大型sql参数集,sql-server,Sql Server,我有两个断开连接的sql服务器,它们之间必须运行相关查询。运行查询的最佳方式是什么,例如: select * from table where id in (1..100000) 其中,1..100000是我从另一个数据库获取的ID,并且不是连续的 in子句不支持那么多参数,创建一个临时表来执行子查询需要花费很长时间。还有其他选择吗?使用SQLServer2005作为数据库,C#作为我的语言 链接服务器不是一个选项。语法可能会稍微关闭,因为我的服务器到服务器MSSQL已经生锈,但是 Selec

我有两个断开连接的sql服务器,它们之间必须运行相关查询。运行查询的最佳方式是什么,例如:

select * from table where id in (1..100000)
其中,1..100000是我从另一个数据库获取的ID,并且不是连续的

in子句不支持那么多参数,创建一个临时表来执行子查询需要花费很长时间。还有其他选择吗?使用SQLServer2005作为数据库,C#作为我的语言


链接服务器不是一个选项。

语法可能会稍微关闭,因为我的服务器到服务器MSSQL已经生锈,但是

Select * from table where id in (select id from [Server_Two\Some_Instance].[SomeDatabase].[user].table2)

语法可能有点不正确,因为我的服务器到服务器MSSQL已经生锈了,但是

Select * from table where id in (select id from [Server_Two\Some_Instance].[SomeDatabase].[user].table2)

如果可能,将它们设置为链接服务器。然后可以直接查询其他服务器


一旦你有了链接设置,你还应该考虑内部连接或存在可能会更好。

如果可能的话,将它们设置为链接服务器。然后可以直接查询其他服务器


一旦你有了链接设置,你还应该考虑到内部连接或存在可能会更好。

在不允许跨服务器查询的情况下,在允许的参数数量内工作,你可以将它们用ID的子集放入多个查询中,并将它们与一个联合连接起来。有点麻烦,但它应该可以工作。

要在不跨服务器查询的情况下解决允许的IN参数数量问题,您可以使用ID子集将它们存储到多个查询中,并使用UNION连接它们。有点麻烦,但它应该可以工作。

您可以使用函数分解输入字符串并返回一个表。这里有很多关于如何在子句中使用动态参数的问题,应该有一个例子


如果可以链接服务器,则可以在两台服务器之间连接。

可以使用函数分解输入字符串并返回表。这里有很多关于如何在子句中使用动态参数的问题,应该有一个例子


如果可以链接服务器,则可以在两台服务器之间联接。

另一个听起来像您已经探索过的选项是创建一个临时表,该临时表的id将用作联接主表的标准

select * from atable a
inner join #temptable t on a.id = t.id

因为它们是ID,所以我假设它们是索引的。

另一个听起来像您探讨过的选项是使用ID创建临时表,该ID将用作连接到主表的标准

select * from atable a
inner join #temptable t on a.id = t.id

因为它们是ID,所以我假设它们是索引的。

如何生成in?如果它是文本,您可以以不同的方式生成它。还是这会导致同样的错误

 SELECT.....
 WHERE id in (1..10000)
    OR id in (10001..20000)
 -- etc.

您是如何生成输入的?如果它是文本,您可以以不同的方式生成它。还是这会导致同样的错误

 SELECT.....
 WHERE id in (1..10000)
    OR id in (10001..20000)
 -- etc.

他提到它们当前已断开连接,因此这将不起作用(尚未)。但是,一旦它们链接,这是有效的。他提到它们当前已断开连接,因此这将不起作用(尚未)。但是,一旦它们链接,这是有效的。