Periksa tingkat kompatibilitas database (tidak 100% jelas apakah masalah terjadi di DB1 atau saat memanggil fungsi di DB1).
Saya yakin tingkat kompatibilitasnya adalah 80 dalam basis data apa pun yang menunjukkan masalah; SQL Server 2000 tidak mengizinkan fungsi untuk diteruskan langsung ke UDF seperti itu (dan kami memiliki masalah yang sama memanggil beberapa fungsi manajemen dinamis jika tingkat compat adalah 80 - lihat postingan blog ini dan komentarnya ). Basis data ini harus telah dipulihkan atau dilampirkan setelah dicadangkan atau dilepaskan dari tahun 2000. Atau setelah ditingkatkan dari tahun 2000. Anda dapat memeriksa kompatibilitas saat ini dengan cara ini:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';
Jika Anda menemukan <100, Anda dapat mengatakan:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;
Tetapi Anda hanya boleh melakukannya jika Anda tahu bahwa kompatibilitas yang lebih rendah tidak diperlukan karena alasan lain - dan Anda harus memvalidasi pada sistem pengujian bahwa database berfungsi seperti yang diharapkan di bawah tingkat kompatibilitas yang baru. Jika Anda memiliki masalah, Anda selalu dapat mengubahnya kembali, tetapi lebih baik bersiap-siap.
Jika Anda tidak ingin mengacaukan tingkat kompatibilitas, Anda dapat mengubah logika Anda sedikit.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);