2008-10-26 12 views
66

मेरे पास दो परियोजनाओं के साथ एक विजुअल स्टूडियो 2008 समाधान है (एक वर्ड-टेम्पलेट प्रोजेक्ट और परीक्षण के लिए वीबीनेट कंसोल एप्लिकेशन)। दोनों परियोजनाएं एक डेटाबेस प्रोजेक्ट का संदर्भ देती हैं जो एक एमएस-एक्सेस 2007 डेटाबेस फ़ाइल से कनेक्शन खोलती है और System.Data.OleDb के संदर्भ हैं। डेटाबेस परियोजना में मैं एक समारोह जो एक डेटा तालिका को पुन: प्राप्त इस प्रकारमाइक्रोसॉफ्ट.एसीई.ओएलडीबी.12.0 प्रदाता पंजीकृत नहीं है

private class AdminDatabase 
    ' stores the connection string which is set in the New() method 
    dim strAdminConnection as string 

    public sub New() 
    ... 
    adminName = dlgopen.FileName 
    conAdminDB = New OleDbConnection 
    conAdminDB.ConnectionString = "Data Source='" + adminName + "';" + _ 
     "Provider=Microsoft.ACE.OLEDB.12.0" 

    ' store the connection string in strAdminConnection 
    strAdminConnection = conAdminDB.ConnectionString.ToString() 
    My.Settings.SetUserOverride("AdminConnectionString", strAdminConnection) 
    ... 
    End Sub 

    ' retrieves data from the database 
    Public Function getDataTable(ByVal sqlStatement As String) As DataTable 
     Dim ds As New DataSet 
     Dim dt As New DataTable 
     Dim da As New OleDbDataAdapter 
     Dim localCon As New OleDbConnection 


     localCon.ConnectionString = strAdminConnection 

     Using localCon 
      Dim command As OleDbCommand = localCon.CreateCommand() 
      command.CommandText = sqlStatement 
      localCon.Open() 
      da.SelectCommand = command 
      da.Fill(dt) 
      getDataTable = dt 
     End Using 

    End Function 
End Class 

जब मैं अपने Word 2007 खाका परियोजना सब कुछ से इस समारोह फोन ठीक काम करता है है, त्रुटियाँ नहीं। लेकिन जब मैं सांत्वना आवेदन से चलाने यह निम्न अपवाद

पूर्व = { " 'Microsoft.ACE.OLEDB.12.0' प्रदाता स्थानीय मशीन पर पंजीकृत नहीं है।"}

फेंकता

दोनों परियोजनाओं का एक ही संदर्भ है और कंसोल एप्लिकेशन ने पहली बार लिखा था (कुछ समय पहले) लेकिन अब यह काम बंद कर दिया है। मुझे कुछ याद आना चाहिए लेकिन मुझे नहीं पता कि क्या। कोई विचार?

+0

मुझे भी एक ही समस्या का सामना करना पड़ रहा है। क्या आप कृपया मेरी मदद कर सकते हैं? जहां मुझे 2007 एक्सेस डेटाबेस प्रदाता के इंस्टॉलर मिलेंगे? –

+0

देखें -> http://stackoverflow.com/questions/6649363/ – Bernhard

उत्तर

41

मेरे पास विजुअल स्टूडियो 2008 के साथ एक विज़ुअल बेसिक प्रोग्राम है जो एक्सेस 2007 डेटाबेस का उपयोग करता है और एक ही त्रुटि प्राप्त कर रहा था। मुझे कुछ धागे मिले हैं जो उन्नत संकलन कॉन्फ़िगरेशन को x86 पर प्रोग्राम गुणों में पाया गया है यदि आप 64 बिट सिस्टम चला रहे हैं। अब तक मुझे अपने कार्यक्रम के साथ कोई समस्या नहीं है।

+4

लेकिन एएसपीनेट एप्लिकेशन के लिए यह आईआईएस द्वारा निर्धारित किया गया है, इसलिए इस आलेख को देखें: http://support.microsoft.com/kb/894435/en-us – devzero

+5

मुझे एएसपी पर एक ही समस्या हो रही थी .NET अनुप्रयोग - स्थानीय स्तर पर कोड चला रहा है, लेकिन सर्वर पर विफल रहा। 2007 कार्यालय सिस्टम चालक को स्थापित करने की आवश्यकता: डेटा कनेक्टिविटी घटक यहां: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en, फिर उसे सक्षम करना था 32-बिट अनुप्रयोगों को अनुमति देने के लिए वेब साइट के लिए कार्यकर्ता प्रक्रिया (एप्लिकेशन पूल)। – Keith

+3

यह उन लोगों की सहायता नहीं करता जो x86 का उपयोग नहीं कर सकते हैं। 64-बिट के लिए एसीई का एक संस्करण है: http://goo.gl/Cxsf1, लेकिन आपको Office 2003 को अनइंस्टॉल करना होगा क्योंकि वहां संगतता समस्याएं हैं। – Jordan

7

क्या आप 32 बिट चल रहे डेटाबेस के साथ 64 बिट सिस्टम चला रहे हैं लेकिन कंसोल 64 बिट चल रहा है? कोई एमएस एक्सेस ड्राइवर नहीं है जो 64 बिट चलाता है और आपके द्वारा रिपोर्ट की गई किसी भी त्रुटि की रिपोर्ट करेगा।

+0

हां, मैं 64 बिट एक्सपी चला रहा हूं और यह वास्तव में समस्या थी। लक्ष्य सीपीयू को उन्नत संकलन विकल्पों में x86 बिट एप्लिकेशन और अब सभी कार्यों में स्विच किया गया है। धन्यवाद – Azim

5

समाधान:

यह है कि! लिंक के लिए अर्जुन Paudel धन्यवाद। XNA निर्माता के क्लब ऑनलाइन पर पाया गया समाधान यहां दिया गया है। यह स्टीफन Styrchak द्वारा है।

निम्न त्रुटि मुझे पता चलता है विश्वास है कि आप 64 बिट के लिए संकलन कर रहे हैं:

'माइक्रोसॉफ्ट .ACE.OELDB.12.0' प्रदाता स्थानीय मशीन

मैं न पर पंजीकृत नहीं है एक्सप्रेस संस्करण है लेकिन 2008 एक्सप्रेस में मान्य चरणों का पालन कर रहे हैं?

http://forums.xna.com/forums/t/4377.aspx#22601

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/ed374d4f-5677-41cb-bfe0-198e68810805/?prof=required
- अर्जुन पौडेल


VC# Express में, इस संपत्ति याद आ रही है, लेकिन यदि आप जानते हैं, जहां देखने के लिए आप अभी भी एक x86 विन्यास बना सकते हैं।

यह चरणों की एक लंबी सूची की तरह दिखता है, लेकिन एक बार जब आप जानते हैं कि ये चीज़ें कहां हैं तो यह बहुत आसान है। कोई भी जिसके पास केवल VC# Express है, यह शायद यह उपयोगी लगेगा। एक बार जब आप Configuration Manager के बारे में जानते हैं, तो अगली बार यह अधिक सहज हो जाएगा।

1.In कुलपति # एक्सप्रेस 2005, Tools -> Options में जाते हैं।
2।विकल्प संवाद के निचले बाएं कोने में, "Show all settings" कहने वाले बॉक्स को चेक करें।
3. बाईं ओर पेड़-दृश्य में, "Projects and Solutions" का चयन करें।
4. दाईं ओर के विकल्पों में, "Show advanced build configuraions."
5. OK पर क्लिक करें।
6. Build -> Configuration Manager पर जाएं ...
7. अपनी प्रोजेक्ट के बगल में प्लेटफ़ॉर्म कॉलम में, combobox पर क्लिक करें और "<New...>" चुनें।
8. "New platform" setting, choose "x86" में।
9. OK पर क्लिक करें।
10. Close पर क्लिक करें।
वहां, अब आपके पास x86 कॉन्फ़िगरेशन है! बहुत आसान! :-)

मैं किसी भी CPU प्लेटफ़ॉर्म को हटाने के लिए Configuration Manager का उपयोग करने की भी अनुशंसा करता हूं। आप वास्तव में नहीं चाहते हैं कि यदि आपके पास 32-बिट देशी डीएलएल (यहां तक ​​कि अप्रत्यक्ष निर्भरता) पर भी निर्भरता है।

स्टीफन स्टिरचैक | XNA खेल स्टूडियो डेवलपर http://forums.xna.com/forums/p/4377/22601.aspx#22601


+0

कंपाइलर लक्ष्य (x86 या 64 बिट) को बदलने पर अतिरिक्त जानकारी और विस्तृत स्पष्टीकरण के लिए धन्यवाद। – Azim

3

मैंने सोचा कि मैं में झंकार था, क्योंकि मैं जब समस्या का एक अलग संदर्भ का सामना करना पड़ इस सवाल मिल गया और सोचा था कि यह भविष्य में अन्य सताया आत्माओं मदद कर सकता है:

मेरे पास आईएसआई 7.0 पर होस्ट किया गया एक एएसपी.NET ऐप था जो विंडोज सर्वर 2008 64-बिट पर चल रहा था। http://blogs.msdn.com/vijaysk/archive/2009/03/06/iis-7-tip-2-you-can-now-run-32-bit-and-64-bit-applications-on-the-same-server.aspx

यह IIS 6.0 में अलग तरह से काम करता है थोड़ा (आप एप्लिकेशन-पूल में Enable32bitAppOnWin64 निर्धारित नहीं कर सकते:

के बाद से आईआईएस प्रक्रिया bitness के नियंत्रण में है, मेरे मामले में समाधान Enable32bitAppOnWin64 सच के लिए सेटिंग सेट करने के लिए था स्तर) http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0aafb9a0-1b1c-4a39-ac9a-994adc902485.mspx?mfr=true

52

असल में, यदि आप 64-बिट मशीन पर हैं, तो आईआईएस 7 (डिफ़ॉल्ट रूप से) 32-बिट ऐप्स की सेवा नहीं करता है, जो डेटाबेस इंजन चालू होता है।

1) सुनिश्चित है कि 2007 डेटाबेस इंजन स्थापित किया गया है, इस पर डाउनलोड किया जा सकता: http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

2) खुला IIS7 प्रबंधक, और आवेदन ताल क्षेत्र को खोलने तो यहाँ वास्तव में आप क्या करते हैं। दाएं साइडबार पर, आपको एक विकल्प दिखाई देगा जो "एप्लिकेशन पूल डिफ़ॉल्ट सेट करें" कहता है। इसे क्लिक करें, और एक विकल्प विकल्प के साथ पॉप अप होगा।

3) दूसरा क्षेत्र नीचे, जो '32-बिट अनुप्रयोग सक्षम करें' कहता है, डिफ़ॉल्ट रूप से गलत रूप से FALSE पर सेट हो जाता है। बस इसे 'सत्य' में बदलने के लिए 'झूठी' कहां क्लिक करें।

4) अपने ऐप पूल को पुनरारंभ करें (आप इसे स्टार्ट के बजाय रीसाइक्ल पर मारकर ऐसा कर सकते हैं, फिर भी काम करेगा)।

5) किया गया, और आपका त्रुटि संदेश दूर हो जाएगा।

+0

यह मेरे लिए काम किया ... विजुअल स्टूडियो 2010 प्रीमियम, विंडोज सर्वर 2008 आर 2, आईआईएस 7, एक टायर वेब अनुप्रयोग में डब्ल्यूसीएफ का उपयोग कर। – longda

+0

धन्यवाद - बिल्कुल मुझे क्या चाहिए! – Andy

+0

+1, आपकी सिफारिश काम किया। – Phil

1

मुझे एक .NET एप्लिकेशन के साथ पूरी तरह से अद्यतन विंडोज विस्टा फैमिली 64 बिट पर एक ही त्रुटि मिली है जिसे मैंने केवल 32 बिट तक संकलित किया है - प्रोग्राम 64 बिट मशीनों पर प्रोग्राम x86 फ़ोल्डर में स्थापित है। यह 2007 के डेटाबेस डेटाबेस प्रदाता के साथ भी इस त्रुटि संदेश के साथ विफल रहता है, उसी इंस्टॉल के एसपी 2 के साथ/आईओएस स्थापित और 32 बिट ऐप समर्थन के लिए ऐप पूल सेट ...हाँ मैंने हर समाधान हर जगह कोशिश की है और अभी भी कोई सफलता नहीं है।

मैं ऐस OLE DB.12.0 करने के लिए अपने एप्लिकेशन बंद क्योंकि JET4.0 64 बिट मशीनों पर असफल रहा था - और यह कोई बेहतर है: -:

http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/

/सबसे होनहार धागा मैंने पाया यह था

लेकिन जब आप 64 बिट "2010 कार्यालय सिस्टम ड्राइवर बीटा: डेटा कनेक्टिविटी घटक" स्थापित करने का प्रयास करते हैं, तो यह आपको बताता है कि आप सभी 32 बिट ऑफिस अनुप्रयोगों को अनइंस्टॉल किए बिना 64 बिट संस्करण स्थापित नहीं कर सकते ... और 32 बिट संस्करण स्थापित करना 2010 कार्यालय सिस्टम चालक बीटा: डेटा कनेक्टिविटी घटक प्रारंभिक समस्या को हल नहीं करते हैं, यहां तक ​​कि "Microsoft.ACE.OLEDB.12.0" के साथ "Microsoft.ACE.OLEDB.14.0" के बजाय प्रदाता के रूप में, जो कि पृष्ठ (और अन्य) सिफारिश करें। Oledb32.dll और OLEDB32r.DLL सर्वर पर पंजीकृत किया जा रहा की गलत स्वाद की वजह से

मुद्दा है:

मेरा अगला प्रयास इस पोस्ट का पालन करने के लिए किया जाएगा। यदि 64 बिट संस्करण पंजीकृत हैं, तो उन्हें अनियंत्रित करने की आवश्यकता है, और उसके बाद 32 बिट संस्करण पंजीकृत हैं। इसे ठीक करने के लिए,% प्रोग्राम फ़ाइलों%/सामान्य फ़ाइलें/सिस्टम/ओएलई डीबी में स्थित संस्करणों को अनधिकृत करें। फिर संस्करणों को उसी पथ पर पंजीकृत करें लेकिन% प्रोग्राम फ़ाइलों (x86)% निर्देशिका में।

क्या किसी और को 64 बिट मशीनों पर जेईटी 4.0 और ओएलडीडीबी एसीई प्रदाताओं दोनों के साथ इतना परेशानी हुई है? क्या किसी को कोई समाधान मिला है यदि कोई अन्य काम नहीं करता है?

+0

यहां उपयोगी जानकारी है, लेकिन जैसा कि आप अब जानते हैं, यह लेखन शैली स्टैक एक्सचेंज के लिए पसंदीदा नहीं है। यदि आपने इसे साफ़ किया है (और शायद अपडेट किया गया है कि आपके लिए क्या काम करना समाप्त हो गया है, यदि आपको अभी भी याद है), तो यह प्रश्न में शामिल होगा, खासकर जब से 12.0 के बाद संस्करणों के बहुत कम संदर्भ हैं (और क्या उनका उपयोग किया जाना चाहिए) जाल। या, कम से कम, मैं अद्यतन की सराहना करता हूं। – CWilson

2

मुझे एक ही समस्या है। मैं विंडोज 7 64 बिट पर Office 2010 64 बिट स्थापित करने का प्रयास करता हूं और फिर 2007 Office सिस्टम ड्राइवर स्थापित करता हूं: डेटा कनेक्टिविटी घटक।

उसके बाद, विजुअल स्टूडियो 2008 एमएस-एक्सेस 2007 डेटाबेस फ़ाइल से कनेक्शन खोल सकता है।

2

एक समान स्टैक एक्सचेंज धागा https://stackoverflow.com/a/21455677/1368849

मैं संस्करण 15, नहीं 12 स्थापित है, जो मैं इस PowerShell कोड चलाकर पता चला था पर मेरी पोस्ट देखें ...

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

... जो मुझे इस परिणाम (मैं संक्षिप्तता के लिए अन्य डेटा स्रोतों को हटा दिया है) ...

SOURCES_NAME    SOURCES_DESCRIPTION                  
------------    -------------------                  
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider 
1

मुझे लगता है कि यह सोचते हैं हूँ दे दी है यदि आप एक 32 बिट डाटाबेस के साथ एक 64 बिट सिस्टम चल रहा है और करने की कोशिश कर रहे हैं 64 बिट कंसोल चलाएं, मशीन पर निम्नलिखित पैकेज स्थापित किए जाने की आवश्यकता है। http://www.microsoft.com/download/en/details.aspx?id=13255:

  1. माइक्रोसॉफ्ट एक्सेस डेटाबेस इंजन स्थापित 2010 86 पुनर्वितरण, इस स्थापना पर उपलब्ध है।
  2. Office 2007 के डेटा कनेक्टिविटी घटक, यह स्थापना पर उपलब्ध है: http://www.microsoft.com/download/en/confirmation.aspx?id=23734
  3. माइक्रोसॉफ्ट एक्सेस डेटाबेस इंजन 2010 x64 पुनर्वितरण योग्य। आप को स्थानीय रूप से पैकेज डाउनलोड करने और निष्क्रिय ध्वज के साथ चलाने की आवश्यकता होगी। आप यहां इंस्टॉलेशन डाउनलोड कर सकते हैं: http://www.microsoft.com/en-us/download/details.aspx?id=13255 '/ passive' ध्वज के साथ कमांड प्रॉम्प्ट का उपयोग कर संस्थापन करना। कमांड प्रॉम्प्ट में निम्न आदेश चलाएं: 'AccessDatabaseEngine_x64।exe/passive '

नोट: ऑर्डर महत्वपूर्ण लगता है - इसलिए यदि आपके पास पहले से कुछ भी इंस्टॉल है, तो अनइंस्टॉल करें और उपरोक्त चरणों का पालन करें।

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