2011-06-21 12 views
8

मुझे पता है कि मैं इस तरह जब डेटाबेस में प्रक्रिया बनाने CLR प्रक्रियाओं के लिए डिफ़ॉल्ट मान परिभाषित कर सकते हैं,:एसक्यूएल सीएलआर प्रक्रिया वीएस -2008 परिनियोजन में डिफ़ॉल्ट पैरामीटर?

CREATE PROCEDURE [dbo].[ShredXml] (
    @InputXml [xml], 
    @AttributeElementHandling [tinyint] = 0, 
    @ConversionHandling [tinyint] = 0, 
    @RootElementName [nvarchar](255) = null 
    ) 
AS EXTERNAL NAME [ClrXmlShredder].[ClrXmlShredder].[ShredXml] 

क्या मैं समझ नहीं किसी भी तरह से यह करने के लिए दृश्य स्टूडियो को समझाने के लिए है कि क्या वहाँ है अपने "तैनाती परियोजना" विकल्प का उपयोग करते समय स्वचालित रूप से ...

क्या कोई विशेषता एक विज़ुअल स्टूडियो को बताने के लिए तर्क पर सेट कर सकती है कि आप उस तर्क के लिए डिफ़ॉल्ट मान क्या चाहते हैं, जब यह डेटाबेस में proc बनाता है ?

अद्यतन: मैं nullability "SqlFacet", कि कोई प्रभाव नहीं लग रहा था की स्थापना की कोशिश की है -

[Microsoft.SqlServer.Server.SqlProcedure] 
public static void ShredXml(SqlXml InputXml, 
    [SqlFacet(IsNullable = true)]SqlByte AttributeElementHandling, 
    [SqlFacet(IsNullable = true)]SqlByte ConversionHandling, 
    [SqlFacet(MaxSize = 255, IsNullable = true)]string RootElementName 
    ) 
{ 
} 
+0

क्या आपको कभी इसका समाधान मिल गया है? – tbone

+0

@ टोन नहीं, मैंने नहीं किया, लेकिन फिर ईमानदारी से मैंने 2 साल पहले इस बारे में चिंता करना बंद कर दिया, वीएस 2008 के साथ; मुझे नहीं पता कि बाद के संस्करणों में कुछ भी बदल गया है या नहीं। – Tao

उत्तर

1

क्या विज़ुअल स्टूडियो को यह बताने के लिए एक तर्क पर सेट किया जा सकता है कि आप उस तर्क के लिए डिफ़ॉल्ट मान क्या चाहते हैं, जब यह डेटाबेस में proc बनाता है?

आज के रूप में उत्तर एक शानदार "नहीं" है, दुर्भाग्यवश। SSDT ऐसे अदिश UDFs के लिए WITH RETURNS NULL ON NULL INPUT निर्दिष्ट करते समय, आदि के रूप में काफी कुछ विकल्प हैं, का समर्थन नहीं करता

मैं एक कनेक्ट सुझाव खोल दिया, पैरामीटर डिफ़ॉल्ट का समर्थन करने के लिए SSDT - Support T-SQL parameter defaults for SQLCLR objects via the SqlFacet attribute when generating the publish and create SQL scripts, लेकिन आधिकारिक शब्द अब तक है: "बहुत अच्छा विचार है, लेकिन नहीं जल्द ही होने वाला होगा "। (SQL सर्वर/उपयोगकर्ता स्क्रिप्ट में पाया)

अब के लिए

तो आपका सर्वश्रेष्ठ दांव एक के बाद तैनाती स्क्रिप्ट बनाने के लिए है और या तो

  • ALTER बयान (यदि "DDL उत्पन्न" विकल्प का उपयोग) जोड़ सकते हैं या के रूप में वांछित
  • CREATE बयान ("DDL उत्पन्न" विकल्प का उपयोग नहीं करता है, तो)
वहाँ

संग्रहित प्रक्रिया और/या समारोह गुण को फिर से परिभाषित करने के लिए। पोस्ट-परिनियोजन स्क्रिप्ट जेनरेट की गई तैनाती स्क्रिप्ट के अंत में संलग्न हो जाती है।

मैं कुछ ऐसी चीज पर भी काम कर रहा हूं जो एसएसडीटी प्रकाशन प्रक्रिया में इस अंतरंग छेद को ठीक से ठीक करेगा और इन विकल्पों को प्रोग्रामेटिक रूप से सेट करने की अनुमति देगा। अगर मैं इसे काम कर रहा हूं तो मैं विवरण के साथ इस उत्तर को अपडेट कर दूंगा।

0

आप परिभाषित कर सकते हैं (जो बनाता है भावना मुझे लगता है कि afaik संग्रहीत proc पैरामीटर हमेशा व्यर्थ कर रहे हैं?) समारोह में डिफ़ॉल्ट मान। जब वे अंतर्निहित एसक्यूएल-साइड रैपर से शून्य पास हो जाते हैं तो उनका उपयोग किया जाएगा। बिना डिफ़ॉल्ट के प्रक्रिया पैरामीटर घोषित करें और फ़ंक्शन में डिफ़ॉल्ट डालें। यह ठीक होना चाहिए।

+0

धन्यवाद, लेकिन यह वास्तव में मैं नहीं पूछ रहा हूं। यदि आप कहते हैं कि मैं करता हूं, तो मेरी प्रो को कॉलर को "EXEC ShredXml @Value, null, null, null" जैसे कुछ कहने की आवश्यकता है। मैं उन्हें "EXEC ShredXml" कहने में सक्षम होना चाहता हूं। मैन्युअल प्रकाशन के साथ कामकाज के रूप में एक बड़ा सौदा/डिज़ाइन समस्या नहीं है - दृश्य स्टूडियो स्वचालित तैनाती के बारे में केवल एक प्रश्न। – Tao