डेटाबेस के संगतता स्तर की जाँच करें (यह 100% स्पष्ट नहीं था कि समस्या DB1 में हो रही थी या DB1 में फ़ंक्शन को कॉल करते समय)।
मैं शर्त लगाता हूं कि जो भी डेटाबेस समस्या प्रदर्शित कर रहा है उसमें संगतता स्तर 80 है; SQL सर्वर 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);