Kiểm tra mức độ tương thích của cơ sở dữ liệu (không rõ 100% sự cố đang xảy ra trong DB1 hay khi gọi hàm trong DB1).
Tôi cá rằng mức độ tương thích là 80 trong bất kỳ cơ sở dữ liệu nào đang có vấn đề; SQL Server 2000 không cho phép các chức năng được truyền trực tiếp đến UDF theo cách đó (và chúng tôi gặp vấn đề tương tự khi gọi một số chức năng quản lý động nếu mức compat là 80 - hãy xem bài đăng trên blog này và các nhận xét ). Cơ sở dữ liệu này phải được khôi phục hoặc đính kèm sau khi được sao lưu hoặc tách rời từ năm 2000. Hoặc sau khi được nâng cấp từ năm 2000. Bạn có thể kiểm tra tính tương thích hiện tại theo cách này:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';
Nếu bạn thấy nó là <100, bạn có thể nói:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;
Nhưng bạn chỉ nên làm như vậy nếu bạn biết rằng khả năng tương thích thấp hơn là không cần thiết vì một số lý do khác - và bạn nên xác nhận trên hệ thống thử nghiệm rằng cơ sở dữ liệu hoạt động như mong đợi ở mức tính toán mới. Nếu bạn gặp sự cố, bạn luôn có thể thay đổi lại, nhưng tốt hơn hết bạn nên chuẩn bị.
Nếu bạn không muốn gặp rắc rối với mức độ tương thích, bạn có thể thay đổi logic của mình một chút.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);