यह आलेख SQL सर्वर में किसी ऑब्जेक्ट को छोड़ते समय अनुमतियाँ खोने के बारे में एक अच्छी बात करता है।
तो यहाँ वह तरीका है जो अनुमतियों को बरकरार रखता है:
IF OBJECT_ID('spCallSomething') IS NULL
EXEC('CREATE PROCEDURE spCallSomething AS SET NOCOUNT ON;')
GO
ALTER PROCEDURE spCallSomething ...
--instead of DROP/CREATE
फ़ंक्शंस के लिए भी काम करता है, बस PROCEDURE
. को बदलें FUNCTION
के साथ उपरोक्त कोड में।
इसे इस तरह से करने पर विचार करने का एक अन्य कारण विफलता के प्रति सहिष्णुता है। मान लीजिए आपका DROP सफल होता है, लेकिन आपका CREATE विफल हो जाता है - आप एक टूटे हुए DB के साथ समाप्त होते हैं। ALTER दृष्टिकोण का उपयोग करके, आप वस्तु के पुराने संस्करण के साथ समाप्त हो जाएंगे।