我有一个 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 行),并且它会产生显着差异。
有没有办法可以强制查询远程进行过滤?
Thanks!
您还可以构造一个字符串并使用 openquery ...
set @sqlString =
' select into myTable from openquery
(remoteServer,
"SELECT * FROM Database.dbo.RemoteView WHERE EntryDate > %DTSTART"
)
'
set @sqlString =
replace(@sqlString, '%DTSTART',
(select cast(dbo.MyCustomCLRDateFunction() as char(8))
)
EXECUTE sp_executesql @stmt=@sqlString
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)