小编典典

强制SQL Remote查询进行远程过滤,而不是本地过滤

sql

我有一个MS SQL查询,该查询通过从远程服务器提取数据。我要提取的数据需要按在运行时确定的日期进行过滤。当我像这样运行查询时:

SELECT * FROM SERVER.Database.dbo.RemoteView
WHERE EntryDate > '1/1/2009'

然后可以远程应用该过滤器…但是,我实际上不希望使用“ 1/1/2009”作为日期-我希望该日期由用户定义的函数提供,例如:

SELECT * FROM SERVER.Database.dbo.RemoteView
WHERE EntryDate > dbo.MyCustomCLRDateFunction()

该函数是返回日期时间的自定义CLR标量值函数…( 您可能会问为什么我需要这样做…细节有些复杂,所以请相信我-我必须这样做方式。

当我运行此查询时,不会对远程查询进行远程过滤-在所有数据被下拉(400,000行与100,000行)之后,将完成过滤,这将产生很大的不同。

有没有一种方法可以强制查询远程进行过滤?

谢谢!


阅读 180

收藏
2021-04-14

共1个答案

小编典典

您不能只发送这样的查询,还是必须在select语句中实际调用clr函数?

Declare @datetime datetime
Set @datetime = dbo.MyCustomCLRDateFunction()

SELECT * FROM SERVER.Database.dbo.RemoteView
WHERE EntryDate > @datetime
2021-04-14