SQL सर्वर एक TRY CATCH
प्रदान करता है किसी एप्लिकेशन को यह महसूस करने में सक्षम करने के लिए तंत्र कि कुछ गलत हो गया है और समस्या को संभालने के लिए उपयुक्त कोड निष्पादित करें। उदाहरण के लिए:
BEGIN TRY <some code> END TRY BEGIN CATCH PRINT 'This is the error: ' + error_message() END CATCH
TRY
. में कोड ब्लॉक पहले निष्पादित किया जाता है। यदि कोई त्रुटि होती है, तो निष्पादन CATCH
को पास कर दिया जाता है ब्लॉक करें।
यदि आप TRY CATCH
का उपयोग करना चाहते हैं तो त्रुटि प्रबंधन के लिए क्या निहितार्थ हैं? एक लिंक किए गए सर्वर के साथ? इस स्थिति में, इसमें त्रुटि हो सकती है:
- स्थानीय SQL सर्वर इंस्टेंस।
- SQL सर्वर इंटरफ़ेस का उपयोग दूरस्थ सर्वर से कनेक्शन को सुविधाजनक बनाने के लिए किया जाता है।
- इंटरफ़ेस का उपयोग दूरस्थ सर्वर को SQL सर्वर के लिए सुलभ बनाने के लिए किया जाता है।
हमारा उदाहरण सेटअप एक Salesforce.com सर्वर को दूरस्थ सर्वर के रूप में उपयोग करेगा। इस दूरस्थ सर्वर प्रकार के लिए, इंटरफ़ेस 2. ODBC ड्राइवर्स और इंटरफ़ेस के लिए Microsoft OLE DB प्रदाता है 3. Easysoft का Salesforce.com ODBC ड्राइवर है।
SQL सर्वर में स्थानीय रूप से निम्न त्रुटि उत्पन्न होती है। लिंक किया गया सर्वर SALESFORCE
. नाम का है अभी तक नहीं बनाया गया है और इसलिए SQL सर्वर इसका पता लगाने में असमर्थ है:
BEGIN TRY EXEC('SELECT * FROM OPENQUERY(SALESFORCE, ''SELECT * FROM LEASE'')') END TRY BEGIN CATCH PRINT 'This is the error: ' + error_message() END CATCH
This is the error: Could not find server 'SALESFORCE' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
अगली त्रुटि ODBC ड्राइवर परत के लिए Microsoft OLE DB प्रदाता में होती है। लिंक किया गया सर्वर SALESFORCE
. नाम का है एक ओडीबीसी डेटा स्रोत का संदर्भ देता है जिसमें लक्ष्य Salesforce.com सर्वर के लिए कनेक्शन विवरण होता है। हालाँकि, SQL सर्वर 64-बिट है लेकिन ODBC डेटा स्रोत 32-बिट ODBC व्यवस्थापक में स्थापित किया गया है। "आर्किटेक्चर बेमेल" त्रुटि के साथ कनेक्शन विफल हो जाता है
OLE DB provider "MSDASQL" for linked server "SALESFORCE" returned message "[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application". This is the error: Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "SALESFORCE".
ध्यान दें कि SQL सर्वर की OLE DB त्रुटि की व्याख्या CATCH
. द्वारा पकड़ी गई है खंड मैथा। OLEDB परत में "कच्ची" त्रुटि नहीं है।
यह अंतिम त्रुटि Salesforce.com से कनेक्ट करने के लिए उपयोग की जाने वाली ODBC परत में होती है। चयनित क्वेरी एक कस्टम Salesforce.com ऑब्जेक्ट ("LEASE") को संदर्भित करती है जिसे अभी तक सक्षम और पॉप्युलेट नहीं किया गया है। "[ईज़ीसॉफ्ट ओडीबीसी] बेस टेबल या व्यू लीज नॉट फाउंड" ओडीबीसी ड्राइवर की एक त्रुटि है, जिसे ओडीबीसी ड्राइवर्स के लिए माइक्रोसॉफ्ट ओएलई डीबी प्रदाता द्वारा पास और प्रदर्शित किया जाता है। पिछले उदाहरण की तरह, यह संदेश ट्रैप करने योग्य नहीं है, संदेश की SQL सर्वर की व्याख्या ट्रैपेबल है।
OLE DB provider "MSDASQL" for linked server "SALESFORCE" returned message "[Easysoft ODBC]Base table or view LEASE not found". This is the error: An error occurred while preparing the query "SELECT * FROM LEASE" for execution against OLE DB provider "MSDASQL" for linked server "SALESFORCE".
SQL सर्वर त्रुटि प्रबंधन के बारे में अधिक जानकारी के लिए लिंक किए गए सर्वर के साथ और बिना दोनों को देखें:
http://www.sommarskog.se/error_handling/Part1.html