2010-05-06 13 views
22

के गलत संस्करण का उपयोग करके SQLCLR हमारे विकास सर्वर के हालिया पुनरारंभ के दौरान SQL Server SQLCLR के लिए .NET 4.0 का उपयोग करना शुरू कर दिया। इसका मतलब यह है CLR का उपयोग कर कि कुछ भी नहीं एसक्यूएल में काम करता है, या कम से कम है कि इन स्रोतों को पढ़ कर मेरी समझ है:.NET Framework

http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/

www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx

सभी पर हम पाते हैं इस प्रकार की त्रुटि संदेश हैं:

संदेश 6517, स्तर 16, राज्य 1, रेखा 1 AppDomain "xxx.dbo [ddl] .3" बनाने में विफल। विधि का प्रकार हस्ताक्षर इंटरऑप संगत नहीं है।

बयान (के रूप में @ जॉन-क्रिस्टेंसेन ने सुझाव दिया) निम्नलिखित जानकारी में

select * from sys.dm_clr_properties 

परिणाम चल रहा है:

*Name*  *Value* 
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 
version  v4.0.30319 
state  CLR is initialized 

किसी को भी यह कैसे हल करने के लिए पता है या हम कैसे मजबूर कर सकते हैं फ्रेमवर्क के पहले संस्करण का उपयोग करने के लिए एसक्यूएल सर्वर सीएलआर?

उत्तर

12

आमतौर पर आप एप्लिकेशन की कॉन्फ़िगरेशन फ़ाइल में supportedRuntime टैग निर्दिष्ट करके एक विशिष्ट .NET Framework संस्करण का उपयोग करने के लिए .NET अनुप्रयोग को मजबूर कर सकते हैं।

तो आप SQL12 के रूट पथ के नीचे \Binn फ़ोल्डर में sqlservr.exe.config बनाने का प्रयास कर सकते हैं और निर्दिष्ट कर सकते हैं कि आप 3.5 तक केवल .NET संस्करणों का उपयोग करना चाहते हैं। कॉन्फ़िगरेशन फ़ाइल की संरचना के लिए this MSDN link देखें।

1

उन्होंने यह सुनिश्चित करने के लिए स्पष्ट विकल्प बनाए कि .NET 4.0 की स्थापना गैर-प्रभावशाली होगी। यह नई शिम फ़ाइलों, mscoree.dll और mscoreei.dll को छोड़कर .NET 4.0 या किसी भी नई फ़ाइलों का उपयोग नहीं करना चाहिए। वे 2.0 रनटाइम के साथ पिछड़े संगत होना चाहिए। आप प्रक्रिया एक्सप्लोरर को डीएलएल के संस्करण संख्याओं को देखने के लिए चला सकते हैं ताकि यह सत्यापित किया जा सके कि यह सही रनटाइम चला रहा है।

8

लेख और वेब पर मेरे शोध से, ऐसा लगता है कि विपरीत हो रहा है - क्या आप संभावित रूप से 4.0 डीएलएल पंजीकृत कर सकते हैं? ऐसा प्रतीत होता है कि SQL Server 2008 हमेशा 2.0 सीएलआर लोड करेगा, न कि 4.0 सीएलआर। इस बयान चलाने की कोशिश करें, यह आपको बता देंगे कौन-सा संस्करण अपने एसक्यूएल सर्वर चल रहा है:

चयन * sys.dm_clr_properties

+0

जब मैं sys.dm_clr_properties से चुनें चलाने * मैं निम्नलिखित: "निर्देशिका: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ संस्करण: v4.0.30319 राज्य: CLR आरंभ नहीं हो जाता" जो मुझे इंगित करता है कि यह v4.0 है जिसका प्रयोग किया जाता है। –

+0

मैंने उस कथन का जवाब मुख्य प्रश्न के साथ भी जोड़ा है। –

6

इंटेल पर अपनी पोस्ट में है कि आप संदर्भ, यदि आप इसे बारीकी से पढ़ा से, यह कहते हैं:

एसक्यूएल सर्वर 2008 और आगामी एसक्यूएल सर्वर 2008 R2 रिहाई, पहले से कूट "किलिमंजारो", दोनों संस्करण 2.0 CLR के नवीनतम सेवा रिहाई लोड करने के लिए जारी रहेगा।

और बाद में:

एसक्यूएल सर्वर के भविष्य के संस्करणों CLR के नए संस्करण को लोड कर सकते हैं, या भी प्रक्रिया के भीतर कई CLR के की लोडिंग का समर्थन है, संस्करण 2.0 की सीएलआर SQL Server 2008 और SQL Server 2008 R2 के भीतर SQLCLR के लिए रहने के लिए यहां है।

मुझे नहीं पता कि आप SQL सर्वर 2008 R2 के अंदर लोड किए गए .NET 4 जैसे कुछ प्राप्त करने का प्रबंधन कैसे करते हैं ....

14

मुझे एक ही परेशानी की समस्या का सामना करना पड़ा। मेरे डेटाबेस में भूगोल/ज्यामिति सामग्री में से कोई भी काम नहीं किया। मुझे एसक्यूएल सर्वर के लिए अंत में से कुछ unsuccesfull बार पुनर्स्थापित (कुछ हफ्ते बाद!) ले लिया लगता है मेरी रजिस्ट्री में निम्न कुंजी

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ OnlyUseLatestCLR

'1'

करने के लिए सेट कर दिया गया था जब मैं इसे '0' पर रीसेट करें, और मशीन को रीबूट करें, चीजें फिर से काम करें!

हंस

0

मैं एक दिन के लिए और मेरे खिड़कियों को अद्यतन करने के बाद इस समस्या थी और .NET समस्या disappeared.the समस्या नेट ढांचे से संबंधित है यह सुधारने का प्रयास चौखटे।