Verificare il livello di compatibilità del database (non era chiaro al 100% se il problema si stava verificando in DB1 o durante la chiamata della funzione in DB1).
Scommetto che il livello di compatibilità è 80 in qualsiasi database stia esibendo il problema; SQL Server 2000 non consentiva il passaggio di funzioni direttamente alle UDF in questo modo (e abbiamo lo stesso problema a chiamare alcune delle funzioni di gestione dinamica se il livello di compatibilità è 80 - vedere questo post del blog e commenti ). Questo database deve essere stato ripristinato o allegato dopo essere stato sottoposto a backup o scollegato dal 2000. O dopo essere stato aggiornato dal 2000. Puoi verificare la compatibilità attuale in questo modo:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';
Se trovi che è <100, puoi dire:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;
Ma dovresti farlo solo se sai che la compatibilità inferiore non è necessaria per qualche altro motivo e dovresti convalidare su un sistema di test che il database funzioni come previsto con il nuovo livello di compatibilità. In caso di problemi, puoi sempre ripristinarlo, ma è meglio essere preparati.
Se non vuoi alterare il livello di compatibilità, puoi cambiare leggermente la tua logica.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);