में मौजूद नहीं है संग्रहीत प्रक्रिया बनाएं, ओरेकल "कथन बनाएं या प्रतिस्थापित करें" करता है। एसक्यूएल सर्वर प्रतीत नहीं होता है - यदि आप एंटरप्राइज़ मैनेजर से स्क्रिप्टिंग कर रहे हैं, तो इसके बजाय इसके बजाय "ड्रॉप और बनाएं" सुझाता है। ड्रॉप और निर्माण किसी भी परिस्थिति में अवांछनीय है जहां आपने संग्रहीत प्रक्रिया पर अनुदान किया है, क्योंकि यह आपके डेटाबेस प्रशासन टीम द्वारा किए गए अनुदान को बाहर कर देता है। डेवलपर्स और प्रशासकों के बीच कन्फर्न को अलग करने में सहायता के लिए आपको वास्तव में "बनाना या प्रतिस्थापित करना" चाहिए।एसक्यूएल सर्वर
यह क्या मैं हाल ही में कर रहा हूँ है:
use [myDatabase]
go
create procedure myProcedure as
begin
print 'placeholder'
end
go
alter procedure myProcedure as
begin
-- real sproc code here
end
go
यह जो मैं चाहता है। यदि प्रक्रिया मौजूद नहीं है, तो इसे सही कोड में परिवर्तित करें। यदि प्रक्रिया मौजूद है, तो निर्माण विफल हो जाता है और नए कोड के साथ कोड को बदलता है।
यह प्रशासकों के लिए एक अलग समस्या पैदा करता है, क्योंकि संग्रह संग्रहीत प्रक्रिया पहले से मौजूद है, तो एक भ्रामक त्रुटि फेंकता है। भ्रामक, ज़ाहिर है, इस तथ्य में कि जब वांछित परिणाम हुआ होता है तो आपको लाल त्रुटि पाठ नहीं दिखना चाहिए।
क्या किसी के पास लाल पाठ को दबाने का कोई तरीका है? मैंने जो भी कोशिश की है, वह 'CREATE/ALTER प्रक्रिया किसी क्वेरी बैच' त्रुटि में पहला कथन होना चाहिए या किसी अन्य तरीके से त्रुटि होनी चाहिए।
की संभावित डुप्लिकेट [? क्या आप एसक्यूएल सर्वर बनाने या बदलने के लिए में क्या करते] (http://stackoverflow.com/questions/1434160/what-do-you-do-in-sql -सर्वर-टू-बिल्ड-या-ऑल्टर) – ruffin
मैं यह इंगित करने जा रहा हूं कि यदि आप अपनी proc के हिस्से के रूप में अनुमतियां स्क्रिप्ट करते हैं तो ड्रॉप और बनाएं में कोई समस्या नहीं है। अगर आपके पास प्रो पर विशेष अनुमति है, तो यह स्रोत कोड भंडार में संग्रहीत स्क्रिप्ट का हिस्सा होना चाहिए। फिर जब आप कोई परिवर्तन करने के लिए जाते हैं, वहां पहले से ही वहां अनुमति है। – HLGEM