एसक्यूएल सर्वर 2008स्क्रिप्ट सभी sprocs और बनाएं
लक्ष्य: sprocs कि डीबी में पहले से ही कर रहे हैं बनाने के लिए स्क्रिप्ट जनरेट करने के लिए। प्रति फ़ाइल एक स्क्रिप्ट होना चाहिए।
मुझे पता है कि मैं बस डेटाबेस और 'कार्य> जेनरेट स्क्रिप्ट्स' पर राइट क्लिक कर सकता हूं, लेकिन यह टेम्पलेट में स्प्रोक स्क्रिप्ट नहीं करता है।
मुझे उसी टेम्पलेट में स्क्रिप्ट करने की आवश्यकता है जब आप ऑब्जेक्ट एक्सप्लोरर और 'स्क्रिप्ट संग्रहीत प्रक्रिया के रूप में> ड्रॉप और क्रिएट' से स्पोक पर राइट क्लिक करते हैं।
यह सच आप 'स्क्रिप्ट उत्पन्न> कार्यों' के माध्यम से इस का एक समान संस्करण प्राप्त है, लेकिन मुख्य अंतर यह है 'कार्य> जनरेट स्क्रिप्ट' विधि dbo.sp_executesql
आदेश के माध्यम से स्क्रिप्ट बनाता है, क्योंकि आप घोंसला नहीं कर सकते हैं एक CREATE PROCEDURE
एक IF
के अंदर ब्लॉक
कार्य> जनरेट इस निर्माण करता है:
USE someDB
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'somesproc') AND type in (N'P', N'PC'))
DROP PROCEDURE someSproc
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'someSproc') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
CREATE PROCEDURE
AS
BEGIN
END
'
END
GO
लेकिन (के रूप में सही sproc क्लिक करने से पाया जाता है) मैं इस आवश्यकता होती है:
USE someDB
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'someSproc') AND type in (N'P', N'PC'))
DROP PROCEDURE someSproc
GO
USE someDB
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE someSproc
AS
BEGIN
SET NOCOUNT ON;
END
GO
कोई विचार?
इस के साथ हल किया जाएगा:
मैं संग्रहीत प्रक्रिया इस तरह टेबल के लिए स्क्रिप्ट उत्पन्न करने के लिए संशोधित बनाएं या बदलें - क्या आपने वोट दिया/टिप्पणी की है?:-) http://connect.microsoft.com/SQLServer/feedback/details/127219/create-or-replace –
आपके वांछित आउटपुट के बारे में कुछ प्रश्न। क्या आपको प्रत्येक कथन के बीच 'कुछ डीबी' उपयोग करने की आवश्यकता है? मुझे लगता है कि अनुमति और निर्भरता आदेश, उस तरह की चीज़ों को अनदेखा करना ठीक है? –
केवल एक 'कुछ डीबी उपयोग करें' की आवश्यकता है। और हाँ, उन दोनों को अनदेखा किया जा सकता है। –