2011-12-16 15 views
6

में एसएमओ असेंबली। मैं नेट फ्रेमवर्क 4.0 का उपयोग कर रहा हूं और वेब परिनियोजन सेटअप पर काम कर रहा हूं, मैंने एसक्यूएल सर्वर 2008 की एसएमओ असेंबली का संदर्भ दिया है, और जब मैं स्मो असेंबली का उपयोग करके अपने सेटअप में ExecuteNonQuery फंक्शन को कॉल करता हूं तो यह मुझे देता है यह त्रुटि "मिश्रित मोड असेंबली रनटाइम के संस्करण 'v2.0.50727' के विरुद्ध बनाई गई है और बिना अतिरिक्त कॉन्फ़िगरेशन जानकारी के 4.0 रनटाइम में लोड नहीं किया जा सकता है।" लेकिन कभी-कभी यह मेरे कोड में सही तरीके से काम करता है लेकिन कुछ बार यह त्रुटि देता है,.NET Framework 4.0

मैंने एक ही कक्षा का उपयोग किया है, एक ही विधि कभी-कभी इसका सही ढंग से चलती है और कुछ बार यह त्रुटि देता है, मैं पूरी तरह से इस त्रुटि से फीका हूं, मुझे इसके लिए कोई कारण नहीं मिला और मैं यह भी जानना चाहता हूं कि एसएमओ असेंबली नेट फ्रेमवर्क v4.0 में उपलब्ध हैं?

उत्तर

10

से: http://social.msdn.microsoft.com/Forums/en-US/sqlsmoanddmo/thread/533f7044-1109-4b7a-a697-2621f23017d6

यह एक ज्ञात समस्या है। .NET 4.0 के खिलाफ एसएमओ का उपयोग माइक्रोसॉफ्ट द्वारा हस्ताक्षरित या घोषित नहीं किया गया है।

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 
+3

यह यूनिट परीक्षणों के लिए काम नहीं करता है। – Case

+0

जिम्पा द्वारा प्रस्तावित समाधान काम नहीं करता है। मुझे आश्चर्य है कि इस समस्या से निपटने के लिए अभी तक कोई सटीक दृष्टिकोण क्यों नहीं है। दो दर्जन से अधिक लिंक खोजे लेकिन कोई संकल्प नहीं। एसक्लक्लिएंट का उपयोग करके मुझे "जाओ" कथन के साथ समस्या है, इसलिए उस दृष्टिकोण का उपयोग नहीं कर सकते हैं। नोट: मैंने एक वेब स्टीप इंस्टॉलर बनाया है और इससे मैं एसएमओ का उपयोग कर इन टी-एसक्यूएल स्क्रिप्ट संबंधित कोड को निष्पादित करने के लिए एक विंडोज फॉर्म प्रोजेक्ट को कॉल करता हूं। –

+0

मैंने कोशिश की और यह विंडोज फॉर्म का उपयोग कर मेरे लिए काम करता है। मेरी चिंता यह है कि मुझे नहीं पता कि किन दुष्प्रभावों का उपयोग किया जाता हैगेगेसीवी 2 रनटाइम एक्टिवेशन पॉलिसी = "सच्चा" आगे बढ़ सकता है। – MikeMalter

3

ExecuteNonQuery को कॉल करने के लिए आप "एसएमओ असेंबली" का उपयोग क्यों कर रहे हैं?

क्यों न केवल संदर्भ और ADO.NET का उपयोग करें? देखें System.Data.SqlClient.ExecuteNonQuery(...)

+11

यह शायद इस विशेष ओपी के लिए प्रासंगिक नहीं है, लेकिन जब आप [ServerConnection.ExecuteNonQuery()] (http://msdn.microsoft.com/query/dev11.query?appId=) पर कॉल करना चाहते हैं तो आपको एसएमओ पुस्तकालयों की आवश्यकता है Dev11IDEF1 और एल = एन अमेरिका और कश्मीर = k (Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery); k (SolutionItemsProject); k (TargetFrameworkMoniker-.NETFramework, संस्करण% 3Dv4.0); k (DevLang-कोई तिथि नहीं) & rd = सच) जो आपको * GO * कीवर्ड के साथ एक एसक्यूएल स्क्रिप्ट चलाने की क्षमता देता है। – slugster

+0

मैंने एडीओ (साथ ही नीचे दिए गए उत्तर में उपयोग किए गए दृष्टिकोण) की कोशिश की और इसे काम करने के लिए मिला। मैं इसके साथ रह सकता हूं क्योंकि मैं उपयोग के साइड इफेक्ट्स के बारे में चिंतित हूं LegacyV2RuntimeActivationPolicy = "true"। – MikeMalter

+0

मैं यूनिट परीक्षण से अपना कोड चला रहा हूं इसलिए मैं इस विकल्प के लिए गया, इसलिए मेरी कोई भी SQL स्क्रिप्ट में गो स्टेटमेंट नहीं हो सकते हैं। वर्कअराउंड: आप गो के लिए अपनी एसक्यूएल स्क्रिप्ट स्कैन कर सकते हैं और छोटी स्क्रिप्ट में विभाजित हो सकते हैं। – Sean

1

नेट v4 में एसएमओ का उपयोग कर अभी के लिए असली जवाब वैकल्पिक हल में यहाँ हो रहा है:

इस काम कर (अपने app.config में जोड़ना) प्राप्त करने के लिए एक असमर्थित विकल्प नहीं है:

http://connect.microsoft.com/SQLServer/feedback/details/643811/net-4-0-compatible-smo

0

मैं अपने आप को इस मुद्दे में आए और ऊपर उल्लिखित टैग (देखें @jimasp टिप्पणी) जोड़ने काम करने के लिए, हालांकि, मैं यह परियोजना है कि कोड था के लिए app.config को जोड़ा गया था नहीं मालूम था हालांकि, यह पी के रूप में इस्तेमाल किया जा रहा था एक कंसोल आवेदन की कला। जब मैंने इसे कंसोल के app.config में जोड़ा तो यह बिना किसी समस्या के भाग गया। मैं इसे गलत app.config में जोड़ रहा था।

संबंधित मुद्दे