データベースの互換性レベルを確認します(問題がDB1で発生したのか、DB1で関数を呼び出したときに発生したのかは、100%明確ではありませんでした)。
問題が発生しているデータベースの互換性レベルは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);