यदि आपके पास एक फ़ंक्शन/संग्रहीत प्रो है जिसे उदाहरण के लिए वेबसाइट से अक्सर कहा जाता है, तो इससे समस्याएं पैदा हो सकती हैं।
संग्रहीत प्रो कुछ मिलीसेकंड/सेकेंड के लिए छोड़ा जाएगा, और उस समय के दौरान, सभी प्रश्न विफल हो जाएंगे।
आप एक को बदलते हैं, तो आप इस समस्या नहीं है।
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = '<name>')
BEGIN
DROP PROCEDURE <name>
END
GO
CREATE PROCEDURE <name>
......
हालांकि, विपरीत बेहतर है, imo:
नव निर्मित संग्रहीत proc के लिए टेम्पलेट्स आम तौर पर इस रूप है
storedproc/समारोह/आदि मौजूद नहीं है, इसे बनाने के एक डमी चयन कथन के साथ। फिर, परिवर्तन हमेशा काम करेगा - इसे कभी नहीं छोड़ा जाएगा।
हम तो हमारे संग्रहीत procs/कार्य आमतौर पर इस तरह है कि के लिए एक संग्रहीत proc है,:
EXEC Utils.pAssureExistance 'Schema.pStoredProc'
GO
ALTER PROCECURE Schema.pStoredProc
...
और हम कार्यों के लिए एक ही संग्रहीत proc का उपयोग करें:
EXEC Utils.pAssureExistance 'Schema.fFunction'
GO
ALTER FUNCTION Schema.fFunction
...
Utils.pAssureExistance में हम एक आईएफ करते हैं और "।" के बाद पहले अक्षर को देखते हैं: यदि यह "एफ" है, तो हम एक डमी फॉनक्शन बनाते हैं, अगर यह "पी" है, तो हम एक डमी संग्रहित प्रो बनाते हैं।
हालांकि सावधान रहो, अगर आप एक डमी अदिश समारोह बनाने के लिए, और अपने ALTER एक मेज-मान समारोह पर है, ALTER फंक्शन असफल हो जायेगी हुए कहा कि यह संगत नहीं है।
फिर, Utils.pAssureExistance, सुविधाजनक हो सकता है, एक अतिरिक्त वैकल्पिक पैरामीटर
EXEC Utils.pAssureExistance 'Schema.fFunction', 'TableValuedFunction'
एक डमी तालिका-मान समारोह पैदा करेगा साथ
Additionaly, मैं गलत हो सकता है, लेकिन मैं अगर आपको लगता है एक ड्रॉप प्रक्रिया करें और एक क्वेरी वर्तमान में संग्रहीत प्रो का उपयोग कर रही है, यह असफल हो जाएगी।
हालांकि, एक बदलने की प्रक्रिया सभी प्रश्नों के लिए प्रतीक्षा संग्रहीत proc का उपयोग बंद करने, और फिर यह बदल देते हैं। यदि प्रश्न संग्रहित प्रो को बहुत लंबे समय तक लॉक कर रहे हैं (कुछ सेकंड कहें), तो ALTER लॉक के लिए प्रतीक्षा करना बंद कर देगा, और संग्रहीत प्रो को वैसे भी बदल देगा: संग्रहीत प्रो का उपयोग करने वाले प्रश्न शायद उस बिंदु पर असफल हो जाएंगे।
प्रश्न का पालन करें: ड्रॉप है ... अभी भी परमाणु बनाओ? मुझे लगता है कि ALTER परमाणु है क्योंकि यह एक ही कथन है, लेकिन यह भी सत्यापित करने लायक है। – gzak