Forzar una consulta remota de SQL para filtrar de forma remota en lugar de localmente

Tengo una MS SQL Query que está extrayendo datos desde un server remoto. Los datos que estoy bajando deben filtrarse por una date que se determina en time de ejecución. Cuando ejecuto la consulta de esta manera:

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

entonces el filter se aplica de forma remota … Sin embargo, en realidad no quiero usar '1/1/2009' como la date: quiero que la date sea suministrada por una function definida por el usuario, como esta:

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

donde la function es una function de valor escalar CLR personalizada que devuelve un time de date … ( Puede preguntar por qué tengo que hacer esto … los detalles son un poco complicados, así que confía en mí, tengo que hacerlo así path )

Cuando ejecuto esta consulta, la consulta remota NO se filtra de forma remota: el filtrado se realiza después de que todos los datos se networkingucen (400,000 filas frente a 100,000 filas) y hace una diferencia significativa.

¿Hay alguna manera de forzar la consulta para que haga el filtrado de forma remota?

¡Gracias!

¿No puede enviar una consulta como esta, o la function clr debe ser llamada dentro de la instrucción select?

 Declare @datetime datetime Set @datetime = dbo.MyCustomCLRDateFunction() SELECT * FROM SERVER.Database.dbo.RemoteView WHERE EntryDate > @datetime 

También podría build una cadena y usar una 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 

Necesita decorar correctamente su function CLR para marcarla como Determinística, precisa y Acceso a datos / Acceso a datos del sistema como DataAccessKind.None.