2009-07-16 3 views
25

मैं कुछ तृतीय पक्ष सॉफ़्टवेयर के साथ किसी समस्या में भाग गया जिसे हम अपने कंप्यूटर प्रयोगशालाओं में सॉफ़्टवेयर लाइसेंस उपयोग को ट्रैक करने के लिए उपयोग करते हैं। हमने हाल ही में कंपनी से आश्वासन प्राप्त करने के बाद ऐप को 64-बिट सर्वर 2008 में माइग्रेट किया था कि यह संगत था और कुछ प्रारंभिक परीक्षण चला रहा था जो दिखाता है कि ऐप 64-बिट वातावरण में काम करता है। दुर्भाग्य से परीक्षण करने वाले व्यक्ति ने कुछ ऐप्स की कार्यक्षमता का परीक्षण नहीं किया जो मेरे पास कुछ रिपोर्ट बनाने के लिए डेटा पर लाइव-और पोस्ट-प्रोसेसिंग करने के लिए डेटा तक पहुंचने पर भरोसा करते हैं।जब मैं इंस्टॉलर मानक डीएसएन नहीं बनाता तो 64-बिट सर्वर 2008 पर 32-बिट ओडीबीसी ड्राइवर का उपयोग कैसे करूं?

यह पता चला है कि एप्लिकेशन में आंतरिक डेटा तक पहुंचने के लिए 64-बिट ओडीबीसी ड्राइवर नहीं है और SQL सर्वर पर अपना डेटा निर्यात करने के लिए 64-बिट SQL सर्वर ओडीबीसी ड्राइवर का उपयोग नहीं कर सकता है। इसमें 32-बिट ओडीबीसी ड्राइवर शामिल है और स्थापित करता है, लेकिन यह इसे एक उपयोगकर्ता डेटा स्रोत के रूप में स्थापित करता है, न कि सिस्टम डेटा स्रोत, जिसका अर्थ है कि मेरी विंडोज सेवा जो लाइव संग्रह चलाती है उसे ढूंढने में सक्षम नहीं है। डेटा स्रोतों के बाद से मैं सिस्टम डीएसएन बनाने में सक्षम नहीं हूं क्योंकि व्यवस्थापक कंसोल स्थापित ड्राइवर नहीं ढूंढ सकता है।

मेरा प्रश्न यह है कि मैं इस कनेक्शन के लिए डेटा स्रोत कैसे कॉन्फ़िगर कर सकता हूं जिसे मैं किसी सिस्टम खाते के अंतर्गत चल रहे सी #/.NET विंडोज सेवा से एक्सेस कर सकता हूं?

चूंकि मैंने इसे करने का कोई तरीका निकाला है, इसलिए मैं अपना समाधान एक उत्तर के रूप में प्रदान करूंगा (FAQ को अपने स्वयं के प्रश्न का उत्तर देने के तरीके में)।

के समान: What software exists for bridging a 64-bit ODBC app to a 32-bit ODBC driver on windows?

+0

आपने इसे समझ लिया है? अच्छा। केवल एक चीज जो मैं जोड़ सकता हूं वह यह है कि (afaik) आप 64 बिट प्रोग्राम (या वीका बनाम) से 32 बिट ओडीबीसी ड्राइवर तक नहीं पहुंच सकते हैं –

+1

यह 64-बिट कंप्यूटर पर 32-बिट ऐप चल रहा है। अगर मुझे फिर से ऐसा करना पड़ा, तो मुझे इस दावे का अधिक संदेह होगा कि उनका सॉफ़्टवेयर 64-बिट पर चलता है जब उनके प्लेटफॉर्म पेज सर्वर 2008 को भी सूचीबद्ध नहीं करते हैं। – tvanfosson

+1

जब आप इस सामान को होस्ट करते हैं तो चीजें वास्तव में बालों वाली होती हैं आईआईएस 6 के तहत (मुझे लगता है कि यह आईआईएस 7 में कोई मुद्दा नहीं हो सकता है?) - आईआईएस 6 के तहत, आप 32 बिट और 64 बिट प्रोग्राम दोनों होस्ट नहीं कर सकते हैं, इसलिए यदि आप 64-बिट एएसपी.नेट की सेवा कर रहे हैं, यदि आपको 32 बिट ओडीबीसी सामग्री की आवश्यकता है तो आप बहुत ज्यादा परेशान हैं। ओह! –

उत्तर

41

ऐसा लगता है कि आप C:\Windows\SysWOW64\odbcad32.exe का उपयोग कर 32-बिट ODBC कनेक्शन बना सकते हैं। मेरा समाधान 32-बिट ओडीबीसी कनेक्शन को सिस्टम डीएसएन के रूप में बनाना था। यह अभी भी मुझे उससे कनेक्ट करने की इजाजत नहीं देता क्योंकि .NET इसे देख नहीं सका। में डीएसएन की तलाश करने के लिए OdbcConnection क्लास को कैसे प्राप्त करें, यह जानने के लिए महत्वपूर्ण और निष्पक्ष खोज के बाद सही जगह पर, मैंने एक ऐसी वेबसाइट पर ठोकर खाई जिसने रजिस्ट्री को एक अलग समस्या को हल करने के लिए संशोधित करने का सुझाव दिया।

मैंने ओडीबीसी कनेक्शन सीधे HKLM\Software\ODBC के तहत बनाया। मैंने ओडीबीसी प्रशासन उपकरण के 32-बिट संस्करण का उपयोग करके स्थापित पैरामीटर को खोजने के लिए SysWOW6432 कुंजी में देखा और इसे मानक स्थान पर पुनर्निर्मित किया। मैंने ड्राइवर के लिए कोई प्रविष्टि नहीं जोड़ा, हालांकि, ऐप के लिए मानक इंस्टॉलर द्वारा स्थापित नहीं किया गया था।

प्रवेश (हाथ से) बनाने के बाद, मैंने अपनी विंडोज़ सेवा को निकाल दिया और सबकुछ खुश था।

+7

+1 भले ही आपको कोई जवाब मिला। मैंने पूछा कि एक साल से पहले मेरे प्रश्न का उत्तर देने के लिए – Aren

+9

+1। –

+0

जाहिर है, माइक्रोसॉफ्ट ने कभी भी "system32" फ़ोल्डर का नाम बदल दिया है, इसलिए system32 में वास्तव में 64 बिट ड्राइवर हैं। और SysWow64 फ़ोल्डर में सभी 32 बिट ड्राइवर हैं। और SysWOW64 फ़ोल्डर के तहत "odbcad32.exe" लॉन्च करना ओडीबीसी डेटा स्रोत संवाद के 32 बिट संस्करण को खोलता है। डिफ़ॉल्ट रूप से, एक .NET प्रोजेक्ट में x86 का "लक्ष्य प्लेटफ़ॉर्म" होगा। मैंने इसे अभी x64 में बदल दिया है और मेरा कनेक्शन .NET के लिए काम कर रहे 64 बिट NetezzaSQL ड्राइवर को पाने के लिए काम किया है। – MacGyver

3

ओपन आईआईएस प्रबंधक, एप्लिकेशन पूल का चयन करें, आप जिस अनुप्रयोग पूल का उपयोग कर रहे हैं उसका चयन करें, दाएं हाथ के मेनू में उन्नत सेटिंग्स पर क्लिक करें। सामान्य के तहत, "सही" पर "32-बिट अनुप्रयोग सक्षम करें" सेट करें।

+3

दुर्भाग्यवश आईआईएस में ऐप नहीं चल रहा था। – tvanfosson

2

इनमें से बहुत सारे उत्तर बहुत पुराने हैं, इसलिए मैंने सोचा कि मैं ऐसे समाधान के साथ अद्यतन करूंगा जो मुझे लगता है कि मददगार है।

हमारा मुद्दा ओपी के समान था, हमने 32 बिट एक्सपी मशीनों को 64 बिट विंडोज 7 में अपग्रेड किया और 32 बिट ओडीबीसी ड्राइवर का उपयोग करने वाले हमारे एप्लिकेशन सॉफ़्टवेयर को हमारे डेटाबेस में लिखने में सक्षम होना बंद कर दिया।

बाहर निकलता है, दो ओडीबीसी डेटा स्रोत प्रबंधक हैं, 32 बिट के लिए एक और 64 बिट के लिए एक है। इसलिए मुझे 32 बिट संस्करण चलाया गया जो सी: \ विंडोज \ SysWOW64 \ odbcad32.exe में पाया गया है।ओडीबीसी डेटा स्रोत प्रबंधक के अंदर, मैं सिस्टम डीएसएन टैब पर जा सकता था और जोड़ें बटन का उपयोग करके सूची में अपना ड्राइवर जोड़ सकता था। (यदि आप ड्राइवर इस सूची में नहीं हैं तो आप ड्राइवरों की सूची देखने के लिए ड्राइवर्स टैब देख सकते हैं, तो आपको इसे इंस्टॉल करने की आवश्यकता हो सकती है)।

अगला मुद्दा वह सॉफ़्टवेयर था जिसे हमने चलाया था 'किसी भी CPU' का उपयोग करने के लिए संकलित किया गया था। यह देखेगा कि ऑपरेटिंग सिस्टम 64 बिट था, इसलिए यह 64 बिट ओडीबीसी डेटा स्रोतों को देखेगा। इसलिए मुझे प्रोग्राम को x86 प्रोग्राम के रूप में संकलित करने के लिए मजबूर होना पड़ा, जो तब 32 बिट ओडीबीसी डेटा स्रोतों को देखने के लिए कहता है। अपने प्रोग्राम को x86 पर सेट करने के लिए, विजुअल स्टूडियो में अपनी प्रोजेक्ट गुणों पर जाएं और शीर्ष पर बिल्ड टैब के नीचे एक प्लेटफ़ॉर्म ड्रॉप डाउन सूची है, और x86 चुनें। यदि आपके पास स्रोत कोड नहीं है और प्रोग्राम को x86 के रूप में संकलित नहीं किया जा सकता है, तो आप प्रोग्राम .exe पर राइट क्लिक कर सकते हैं और संगतता टैब पर जा सकते हैं और आपके लिए काम करने वाली संगतता चुन सकते हैं।

एक बार जब मैंने ड्राइवर जोड़े और कार्यक्रम सही ड्राइवरों को इंगित कर दिया, तो सब कुछ इस तरह काम करता था। उम्मीद है कि यह पुराने सॉफ्टवेयर के साथ काम करने में मदद करता है।

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