Access
 sql >> डेटाबेस >  >> RDS >> Access

एक्सेस ओडीबीसी डेटा स्रोतों से कैसे बात करता है? भाग 1

यह ODBC ट्रेसिंग पर लेखों की छह-भाग श्रृंखला है, जो ODBC डेटा स्रोत (स्रोतों) का उपयोग करने वाले एप्लिकेशन को विकसित करते समय एक्सेस डेवलपर्स के समस्या निवारण और एक्सेस के साथ काम करने में मदद करता है, आमतौर पर लेकिन विशेष रूप से SQL सर्वर नहीं। श्रृंखला का उद्देश्य यह प्रदर्शित करना है कि ODBC SQL कथनों की निगरानी के लिए ODBC ट्रेसिंग का उपयोग कैसे करें, जो कि प्रश्नों, प्रपत्रों या रिपोर्ट जैसी वस्तुओं के साथ काम करते समय या यहां तक ​​कि DAO ऑब्जेक्ट्स के विरुद्ध VBA कोड निष्पादित करते समय पृष्ठभूमि में समस्याओं तक पहुँचते हैं। श्रृंखला यह भी दिखाएगी कि कैसे एक्सेस ओडीबीसी एसक्यूएल स्टेटमेंट तैयार करता है। अंत में, श्रृंखला में ट्रेसिंग की व्याख्या करने और संभावित समस्याओं की पहचान करने का तरीका शामिल होगा। श्रृंखला समाप्त होने तक लेख दैनिक रूप से मुद्रित किए जाएंगे।

अद्यतन करें: 64-बिट विंडोज पर 32-बिट C2R इंस्टॉल के लिए एक रजिस्ट्री कुंजी जोड़ी गई। धन्यवाद, जैक मैकडोनाल्ड!

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

मेरा मानना ​​​​है कि एक्सेस और वीबीए के साथ काम करने वाले डेवलपर के लिए यह वास्तव में यह जानने के लिए समय और निवेश के लायक है कि यह क्या कर रहा है, खासकर ओडीबीसी बैकएंड के साथ। हमारे पास माइग्रेशन परिदृश्य हैं जहां हमारे पास अलग-अलग कारणों से सर्वर-साइड प्रोफाइलिंग टूल तक पहुंच नहीं हो सकती है, लेकिन यह कुछ काम करने तक बटन को सिकोड़ने और बस बेतरतीब ढंग से मैश करने का कारण नहीं होना चाहिए। इससे भी महत्वपूर्ण बात यह है कि हुड के तहत क्या हो रहा है, इसकी ठोस समझ होने से आपको यह अनुमान लगाने में बेहतर मदद मिलती है कि किसी दिए गए परिदृश्य के लिए आपको कौन से प्रदर्शन सुधारों को लागू करने की आवश्यकता है। मैं प्रस्तुत करता हूं कि भले ही आपने केवल श्रृंखला पढ़ ली हो और सीख लिया हो कि एक्सेस ओडीबीसी डेटा स्रोतों के साथ कैसे काम करता है, आप केवल इसलिए बेहतर ढंग से सुसज्जित होंगे क्योंकि आप जानते हैं कि एक्सेस क्या करने की संभावना है।

अधिक जटिल परिदृश्यों के लिए, ट्रेसिंग आमतौर पर यह प्रकट करने में चमत्कार कर सकती है कि चीजें इतनी धीमी गति से क्यों चल रही हैं। क्योंकि आप इसे सर्वर के बजाय एक्सेस साइड पर ट्रेस कर सकते हैं, इसे ओडीबीसी ट्रेसिंग को सक्षम करने के लिए रजिस्ट्री कुंजी तक पहुंच के अलावा उन्नत अनुमतियों की आवश्यकता नहीं है। अतिरिक्त बोनस यह है कि यह किसी भी ODBC डेटा स्रोतों के लिए काम करता है, न कि केवल SQL सर्वर के लिए, इसलिए यदि आपके पास एक क्लाइंट है जो MySQL या PostgreSQL का उपयोग कर रहा है, जिसके बारे में आप कुछ भी नहीं जानते हैं, तो ODBC ट्रेसिंग अभी भी आपको संभावित मुद्दों की पहचान करने में मदद करेगी, जिन्हें आप सीधे संबोधित कर सकते हैं ऐक्सेस' साइड.

श्रृंखला केवल एक्सेस और डीएओ के संदर्भ से केंद्रित होगी। जब हम वीबीए में एडीओ का उपयोग करते हैं तो चीजें भिन्न हो सकती हैं लेकिन यह अभी के दायरे में नहीं है क्योंकि जब भी हम डीएओ का उपयोग करते हैं, तो एक्सेस हमारे अन्यथा असंभव अनुरोधों को पूरा करने के लिए कई चीजें करेगा। एक अच्छा उदाहरण एक एक्सेस क्वेरी है जो वीबीए फ़ंक्शन का संदर्भ देता है। आप SQL सर्वर पर VBA फ़ंक्शन नहीं चला सकते हैं, फिर भी एक्सेस शिकायत नहीं करता है। तो पर्दे के पीछे वास्तव में क्या हो रहा है? हम यह पता लगा सकते हैं कि ओडीबीसी एसक्यूएल कमांड को ट्रेस करके एक्सेस क्या कर रहा है जो ओडीबीसी डेटा स्रोतों को जारी करता है।

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

हमें ODBC का पता क्यों लगाना चाहिए? यह मेरी कैसे मदद करेगा?

यदि आपने कभी इनमें से किसी भी लक्षण का अनुभव किया है:

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

एक और सम्मोहक कारण यह विश्लेषण करने में सक्षम होना है कि एक विशेष फॉर्म ए को खोलने में 10 सेकंड क्यों लगते हैं लेकिन इसी तरह के फॉर्म बी को खोलने में केवल 2 सेकंड लगते हैं। फ़ॉर्म ए को और अधिक तेज़ी से खोलने के लिए चीजों को इधर-उधर करने के लिए समय निकालने के बजाय, आप ट्रेस करके शुरू कर सकते हैं और अंतर की तुलना कर सकते हैं और फिर समस्याओं को अधिक प्रत्यक्ष तरीके से ठीक करने में मदद करने के लिए अंतर पर ध्यान केंद्रित कर सकते हैं।

यहां तक ​​​​कि अगर हम हर बार प्रदर्शन की समस्या होने पर हमेशा ट्रेस नहीं करते हैं, तो एक्सेस को क्या करना चाहिए, इसकी परिचितता बहुत अधिक है। इसलिए भले ही आपने केवल श्रृंखला पढ़ ली हो, उम्मीद है कि आपको ऐक्सेस के साथ काम करने के तरीके के बारे में बेहतर जानकारी होगी, न कि इसके विपरीत।

SQL और ODBC SQL बोलियों को एक्सेस करें

इससे पहले कि हम विवरण में जाएं, हमें यह पहचानने की जरूरत है कि जब भी एक्सेस ओडीबीसी डेटा स्रोत के साथ काम करता है, तो उसे पहले अपने एसक्यूएल स्टेटमेंट को वैध ओडीबीसी एसक्यूएल स्टेटमेंट में अनुवाद करना होगा। यह बैकएंड (जैसे SQL सर्वर, Oracle, MySQL, PostgreSQL) की लक्ष्य SQL बोली से अलग है। ODBC SQL व्याकरण यहाँ वर्णित है। आप ओडीबीसी परत द्वारा समर्थित सभी कार्यों की सूची भी देख सकते हैं। यह याद रखना महत्वपूर्ण है कि जब हम ओडीबीसी का उपयोग कर रहे हैं, तो हम वास्तव में एक्सेस एसक्यूएल से डेटा स्रोत की मूल एसक्यूएल बोली में सीधे अनुवाद नहीं कर रहे हैं। इसके बजाय, हम एक्सेस एसक्यूएल का ओडीबीसी एसक्यूएल में अनुवाद कर रहे हैं, जिसे दिए गए डेटा स्रोत के लिए ओडीबीसी ड्राइवर अपनी मूल बोली में अनुवाद करेगा। यदि आप एक जापानी वक्ता और फ्रांसीसी वक्ता की कल्पना कर सकते हैं जो एक दूसरे की भाषा नहीं बोलते हैं, लेकिन दोनों अंग्रेजी बोलते हैं, तो मूल रूप से ओडीबीसी परत पर यही हो रहा है। एक और परिणाम यह है कि सिर्फ इसलिए कि ओडीबीसी बोली फीचर एक्स का समर्थन करती है, इसका मतलब यह नहीं है कि कोई भी पक्ष इसका समर्थन करता है। ODBC परत पर पोर्टेबल होने के लिए दोनों पक्षों को उस सुविधा X का समर्थन करना चाहिए। सौभाग्य से, अधिकांश ODBC ड्राइवर काफी व्यापक हैं और अधिकांश सुविधाओं को कवर करने का अच्छा काम करते हैं। यदि आपको ऐसी स्थिति का सामना करना पड़ता है जहां एक सुविधा को काम करना चाहिए, लेकिन नहीं करता है, तो यह ओडीबीसी ड्राइवर के दस्तावेज़ों से परामर्श करने के लिए भुगतान कर सकता है ताकि यह सत्यापित किया जा सके कि यह समर्थित है।

ODBC SQL ट्रेसिंग सक्षम करना

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

2007 से पहले जेट डेटाबेस या कार्यालय संस्करण

32-बिट विंडोज़ के लिए:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\ODBC

32-बिट जेट इंजन या 64-बिट विंडोज़ पर 2007 से पहले के कार्यालय के लिए:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Jet\4.0\Engines\ODBC

नोट:अप्रचलित जेट इंजन का कोई 64-बिट संस्करण नहीं है।

कार्यालय 2007 से 2016 (MSI इंस्टॉल)

32-बिट विंडोज़ पर 32-बिट ऑफिस के लिए, या 64-बिट विंडोज़ पर 64-बिट ऑफिस के लिए:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\X.Y\Access Connectivity Engine\Engines\ODBC

64-बिट विंडोज़ पर 32-बिट कार्यालय के लिए:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\X.Y\Access Connectivity Engine\Engines\ODBC

(जहां X.Y आपके द्वारा स्थापित कार्यालय के संस्करण से मेल खाती है)

Office 2016 या Office 365 (चलाने के लिए क्लिक करें)

32-बिट विंडोज़ पर 32-बिट ऑफिस के लिए, या 64-बिट विंडोज़ पर 64-बिट ऑफिस के लिए:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ODBC

64-बिट विंडोज़ पर 32-बिट कार्यालय के लिए:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ODBC

कुंजी के अंतर्गत, कुंजी का पता लगाएं TraceSQLMode और मान को 0 . से बदलें करने के लिए 1

अगर यह पहले से ही खुला है तो एक्सेस को फिर से शुरू करना होगा। अन्यथा, इसे खोलें और कुछ क्वेरीज़ चलाएँ। sqlout.txt . नाम की एक फ़ाइल वर्तमान निर्देशिका में बनाया जाएगा। यह आम तौर पर या तो उसी फ़ोल्डर में होता है जिसमें एक्सेस फ़ाइल या दस्तावेज़ फ़ोल्डर में होता है। वैकल्पिक रूप से, आप VBA फ़ंक्शन CurDir निष्पादित कर सकते हैं वर्तमान निर्देशिका निर्धारित करने के लिए।

मैं नोटपैड ++ या इसी तरह के टेक्स्ट एडिटर का उपयोग करने की सलाह देता हूं जिसमें यह पता लगाने की क्षमता है कि इसे संशोधित किया गया था। फिर यह फ़ाइल को पुनः लोड करने के लिए संकेत देगा। यह आपको नए अपडेट देखने में सक्षम बनाता है क्योंकि एक्सेस लगातार फिर से खोले बिना टेक्स्ट फ़ाइल में नए कमांड का उत्सर्जन करता है। जब आप टेक्स्ट फ़ाइल को सक्रिय करते हैं, तो Notepad++ एक डायलॉग दिखाएगा:

फिर आप Yes पर क्लिक कर सकते हैं एक्सेस द्वारा जारी नवीनतम ODBC SQL कमांड देखने के लिए। चूंकि एक्सेस कई ओडीबीसी एसक्यूएल कमांड जारी कर सकता है, लॉग तेजी से बढ़ सकता है। मुझे उस बिंदु तक पहुंचना सुविधाजनक लगता है जहां मैं कुछ ट्रेस करना चाहता हूं (उदाहरण के लिए कोई फॉर्म खोलने या क्वेरी चलाने के बारे में), फिर मैं sqlout.txt पर स्विच करता हूं , इसे पुनः लोड करें, फिर सभी का चयन करें, सभी टेक्स्ट को हटा दें और फिर अब-रिक्त फ़ाइल को सहेजें। इस तरह, मैं उस क्रिया को निष्पादित कर सकता हूं जिसे मैं ट्रेस करना चाहता हूं, उसके बाद ही अन्य सभी शोरों के बिना प्रासंगिक ओडीबीसी कमांड देख सकता हूं, जिसका पता लगाने वाली कार्रवाई से कोई लेना-देना नहीं है।

प्रदर्शित करने के लिए यहां एक त्वरित वीडियो है:

निष्कर्ष

आपने सीखा है कि ओडीबीसी ट्रेसिंग कैसे चालू करें और एक्सेस द्वारा उत्पन्न आउटपुट को कैसे देखें। आप देख सकते हैं कि आप केवल तालिका खोलने या क्वेरी चलाने जैसी क्रियाओं से भी आउटपुट एकत्र कर सकते हैं। इससे आपको यह जानकारी मिलती है कि एक्सेस वास्तव में ODBC डेटा स्रोत को किस प्रकार की SQL क्वेरी भेज रहा है।

जैसा कि आप देख सकते हैं, ओडीबीसी एसक्यूएल ट्रेसिंग एक्सेस द्वारा जारी किए गए सभी ओडीबीसी एसक्यूएल कमांड को कैप्चर करता है, भले ही आपने इसे सीधे जारी न किया हो। इसलिए, आप इसका उपयोग किसी भी बिंदु पर कर सकते हैं जहां आप मंदी का अनुभव कर रहे हैं, जहां आपके पास अच्छी व्याख्या नहीं है। उदाहरण के तौर पर, मान लें कि आपके पास एक ऐसा फॉर्म है जो खुलने में धीमा है और आपको यकीन नहीं है कि यह फॉर्म के Open में आपका VBA कोड है। या Load घटनाएँ या रिकॉर्ड स्रोत जो समस्या है। एक्सेस एप्लिकेशन को सेट अप करने के लिए एक रणनीति होगी ताकि आप उस फॉर्म को खोलने वाले हों, sqlout.txt साफ़ करें टेक्स्ट फ़ाइल फिर फॉर्म को खोलने के लिए आगे बढ़ें। फिर आप खोजे गए ODBC SQL कथनों की समीक्षा कर सकते हैं और यह निर्धारित कर सकते हैं कि क्या कोई ऐसा है जिसे सुधारा जा सकता है।

यह विशेष रूप से तब मूल्यवान होता है जब आप एक जटिल फॉर्म या रिपोर्ट के साथ काम कर रहे होते हैं जिसमें सबफॉर्म/सब-रिपोर्ट भी होते हैं या इसमें कॉम्बोबॉक्स या लिस्टबॉक्स होते हैं जो रोसोर्स प्रॉपर्टी को संतुष्ट करने के लिए अपने स्वयं के प्रश्न जारी करते हैं।

अगले लेख में, जब हम रिकॉर्ड ब्राउज़ करेंगे तो हम आउटपुट का विश्लेषण करेंगे।

माइक्रोसॉफ्ट एक्सेस के साथ मदद चाहिए? हमारी टीम से 773-809-5456 पर संपर्क करें या हमें [email protected] पर ईमेल करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. माइक्रोसॉफ्ट एक्सेस - मूल बातें

  2. नीदरलैंड एक्सेस डेवलपर दिवस 2019 - 14 सितंबर

  3. एक्सेल डेटा स्रोतों के लिए कनेक्शन स्ट्रिंग पैरामीटर्स

  4. विश्व बैकअप दिवस:जानने के लिए 4 दिलचस्प डेटा हानि तथ्य

  5. लिस्ट व्यू कंट्रोल ट्यूटोरियल-02