Kontrollera kompatibilitetsnivån för databasen (det var inte 100 % klart om problemet inträffade i DB1 eller när funktionen anropades i DB1).
Jag slår vad om att kompatibilitetsnivån är 80 i vilken databas som än uppvisar problemet; SQL Server 2000 tillät inte att funktioner skickades direkt till UDF:er på det sättet (och vi har samma problem med att anropa några av de dynamiska hanteringsfunktionerna om kompatibilitetsnivån är 80 - se det här blogginlägget och kommentarerna ). Denna databas måste ha återställts eller bifogats efter att ha säkerhetskopierats eller tagits bort från 2000. Eller efter att ha uppgraderats från 2000. Du kan kontrollera den aktuella kompatibiliteten på detta sätt:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';
Om du upptäcker att det är <100 kan du säga:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;
Men du bör bara göra det om du vet att den lägre kompatibiliteten inte behövs av någon annan anledning - och du bör validera på ett testsystem att databasen fungerar som förväntat under den nya kompatibiliteten. Om du har problem kan du alltid ändra tillbaka det, men det är bättre att vara förberedd.
Om du inte vill bråka med kompatibilitetsnivån kan du ändra din logik något.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);