Проверете нивото на съвместимост на базата данни (не беше 100% ясно дали проблемът се случва в DB1 или при извикване на функцията в DB1).
Обзалагам се, че нивото на съвместимост е 80 във всяка база данни, която проявява проблема; SQL Server 2000 не позволява функциите да бъдат предавани директно към UDF по този начин (и имаме същия проблем при извикване на някои от динамичните функции за управление, ако нивото на съвместимост е 80 - вижте тази публикация в блога и коментарите ). Тази база данни трябва да е била възстановена или прикачена след архивиране или отделяне от 2000. Или след надграждане от 2000. Можете да проверите текущата съвместимост по този начин:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';
Ако откриете, че е <100, можете да кажете:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;
Но трябва да го направите само ако знаете, че по-ниската съвместимост не е необходима поради някаква друга причина - и трябва да потвърдите на тестова система, че базата данни работи според очакванията при новото ниво на съвместимост. Ако имате проблеми, винаги можете да го промените обратно, но е по-добре да сте подготвени.
Ако не искате да се забърквате с нивото на съвместимост, можете леко да промените логиката си.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);