Sprawdź poziom zgodności bazy danych (nie było w 100% jasne, czy problem występował w DB1 lub podczas wywoływania funkcji w DB1).
Założę się, że poziom zgodności wynosi 80 w dowolnej bazie danych, w której występuje problem; SQL Server 2000 nie pozwalał na przekazywanie funkcji bezpośrednio do UDF w ten sposób (i mamy ten sam problem z wywoływaniem niektórych funkcji dynamicznego zarządzania, jeśli poziom zgodności wynosi 80 - patrz ten wpis na blogu i komentarze ). Ta baza danych musi zostać przywrócona lub dołączona po utworzeniu kopii zapasowej lub odłączeniu od 2000. Lub po aktualizacji z 2000. Możesz sprawdzić aktualną zgodność w ten sposób:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'DB1';
Jeśli okaże się, że wynosi <100, możesz powiedzieć:
ALTER DATABASE DB1 SET COMPATIBILITY_LEVEL = 100;
Ale powinieneś to zrobić tylko wtedy, gdy wiesz, że niższa zgodność nie jest potrzebna z jakiegoś innego powodu - i powinieneś sprawdzić w systemie testowym, czy baza danych działa zgodnie z oczekiwaniami na nowym poziomie zgodności. Jeśli masz problemy, zawsze możesz to zmienić z powrotem, ale lepiej być przygotowanym.
Jeśli nie chcesz zadzierać z poziomem zgodności, możesz nieznacznie zmienić swoją logikę.
DECLARE @now DATETIME = CURRENT_TIMESTAMP;
SELECT * FROM dbo.getAllStatusesForGridProjectsByMaximumDate(@now);