आप संग्रहीत कार्यविधियाँ बना सकते हैं जो संदर्भ ऑब्जेक्ट्स अभी तक मौजूद नहीं हैं (जैसे टेबल और फ़ंक्शन)। आप संग्रहीत कार्यविधियाँ नहीं बना सकते हैं जो संदर्भ कॉलम जो अभी तक मौजूद वस्तुओं में मौजूद नहीं हैं। यह आस्थगित नाम संकल्प की दोधारी तलवार है - एसक्यूएल सर्वर आपको कुछ मामलों में संदेह का लाभ देता है, लेकिन सभी को नहीं। SET STRICT_CHECKS ON;
जिन स्थानों पर यह काम करता है और इसके टूटने के स्थानों के बारे में कुछ विचार प्राप्त करने के लिए एरलैंड के विचारों को देखें :
http://www.sommarskog.se/strict_checks.html
(और आप उसके बाद के ध्रुवीय को कैसे पसंद करेंगे - आप अस्तित्व की परवाह किए बिना कुछ भी संकलित करने की अनुमति देना चाहते हैं, और वह चाहता है कि हर एक कॉलम या टेबल की जाँच की जाए।)
इसकी कोई सेटिंग नहीं है, SET DEFERRED_NAME_RESOLUTION OFF;
हालांकि इसके लिए कहा गया है:
http://connect.microsoft.com/sql/127152
और जैसे कोई सेटिंग नहीं है IGNORE ALL_RESOLUTION;
।
आप इसे कुछ तरीकों से प्राप्त कर सकते हैं, जिनमें शामिल हैं:
(ए) प्रभावित संग्रहीत प्रक्रिया (नों) में गतिशील एसक्यूएल का उपयोग करें।
(b) CREATE PROCEDURE
इसमें कुछ नहीं के साथ एक स्टब का निर्माण करें , फिर अपनी स्क्रिप्ट के बाकी हिस्सों को चलाएं, फिर एक ALTER PROCEDURE
वास्तविक शरीर को चलाएं (संक्षेप में, दो चरणों में प्रक्रिया को तैनात करें)।
(c) अपने परिनियोजन टूल को संचालन के क्रम के बारे में और अधिक स्मार्ट बनाते हैं। यदि तालिका परिवर्तनों को किसी फ़ंक्शन की उपस्थिति की आवश्यकता होती है, तो स्क्रिप्ट उन परिवर्तनों को अंतिम बनाती है। RedGate की SQL तुलना जैसे स्कीमा तुलना उपकरण उचित निर्भरता क्रम में आपके लिए स्क्रिप्ट बनाने के बारे में बहुत अच्छे हैं। आप उल्लेख नहीं करते हैं कि आप किस उपकरण का उपयोग कर रहे हैं, लेकिन यदि यह ऐसा नहीं कर रहा है ...
(d) मार्टिन स्मिथ के यहाँ एक दिलचस्प काम है , लेकिन मैंने इसके साथ नहीं खेला है।