J'ai une requête MS SQL qui extrait des données via un serveur distant. Les données que je tire vers le bas doit être filtré par une date qui est déterminée au moment de l'exécution .. Quand je lance la requête comme ceci:Forcer une requête SQL Remote à filtrer à distance au lieu de
SELECT * FROM SERVER.Database.dbo.RemoteView
WHERE EntryDate > '1/1/2009'
alors le filtre est appliqué à distance ... Cependant, je ne veulent pas réellement utiliser « 1/1/2009 » comme la date - je veux la date à fournir par une fonction définie par l'utilisateur, comme ceci:
SELECT * FROM SERVER.Database.dbo.RemoteView
WHERE EntryDate > dbo.MyCustomCLRDateFunction()
où la fonction est un scalaire CLR personnalisé -valued fonction qui renvoie une date et heure ... (Vous pouvez demander pourquoi j'ai besoin de faire cela ... les détails sont un peu compliqués, alors faites-moi confiance - je dois le faire de cette façon)
Lorsque j'exécute cette requête, la requête distante n'est PAS filtrée à distance - le filtrage est effectué après que toutes les données ont été supprimées (400 000 lignes contre 100 000 lignes) et cela fait une différence significative.
Existe-t-il un moyen de forcer la requête à effectuer le filtrage à distance?
Merci!
Vous savez ce qui est drôle? Cette même solution a été suggérée par un autre utilisateur, mais j'ai dit que je ne pouvais pas le faire parce que la requête est en fait construite dynamiquement par une couche de données WTF qui choisit les colonnes qu'elle veut voir, comment grouper les données, trier, etc. ... Je ne pensais pas que j'allais pouvoir utiliser cette réponse parce que tout est exécuté comme une requête construite. Mais en y regardant de plus près, je pense que j'ai à peine assez de flexibilité dans la façon dont il a été conçu pour que cette solution fonctionne. Dans les tests, il semble certainement fonctionner. –
OK, donc j'ai implémenté avec succès dans l'environnement de développement ... Comme je le pensais, le système WTF avait juste assez de flexibilité que j'ai pu obtenir ce type de code inséré avant la sélection. La leçon apprise ici est "ne rejetez pas immédiatement les solutions possibles sans y réfléchir". Merci! –