मैंने एक SSIS पैकेज बनाया है जो एक्सेल फाइल को SQL सर्वर टेबल में आयात करता है।
SSIS पैकेज बिना किसी समस्या के चलता है, जब मैं इसे अपनी मशीन पर स्थानीय रूप से चलाता हूं, लेकिन जब मैं इसे सर्वर पर चलाता हूं, जहां पैकेज को शेड्यूल किया जाएगा तो मुझे नीचे की त्रुटि मिलेगी (एक पाठ फ़ाइल से मैं एसएसआईएस लॉगिंग का उपयोग करने के लिए त्रुटियों का उत्पादन कर रहा हूं)।
शोध करने के बाद, मुझे जो एकमात्र सिफारिशें मिलीं, वह थी कि रन64 बायट्रंट प्रॉपर्टी को गलत तरीके से सेट किया जाए, जो कि मैंने किया था, लेकिन फिर भी कोई भाग्य नहीं था। मुझे संदेह है कि यह वही है जो मेरी त्रुटि का कारण है, क्योंकि त्रुटि 64 बिट के बारे में कुछ भी निर्दिष्ट नहीं कर रही है (जैसा कि मैंने पाया लेखों में मामला था)।
मैंने यह भी सोचा कि यह हो सकता है कि सर्वर के पास उपयुक्त एक्सेल ड्राइवर नहीं हैं, लेकिन मुझे नहीं लगता कि मामला ऐसा है क्योंकि आमतौर पर त्रुटि संदेश ड्राइवरों के पंजीकृत न होने के बारे में कुछ कहेंगे।
वर्तमान में मेरे पास सर्वर में रिमोट की पहुंच नहीं है। मैं केवल पैकेज को एक फ़ोल्डर में अपलोड कर सकता हूं और फिर इसे एक एप्लिकेशन द्वारा चलाया जाता है, इसलिए केवल त्रुटि संदेश जो मैं देख सकता हूं कि मेरे द्वारा बनाई गई पाठ त्रुटि लॉग में क्या है।
त्रुटि कोड DTS_E_CANNOTACQUIRECNECTIONFROMCONNECTIONMANAGER। कनेक्शन प्रबंधक "Envision" के लिए AcquireConnection पद्धति कॉल त्रुटि कोड 0xC0209303 के साथ विफल रही। AcquireConnection Method कॉल विफल होने के बारे में अधिक जानकारी के साथ इससे पहले त्रुटि संदेश पोस्ट किए जा सकते हैं।
"Envision" मेरे एक्सेल कनेक्शन मैनेजर का नाम है।
मैं एक्सेल फाइल पाथ और एक्सप्रेशन स्ट्रिंग स्ट्रिंग को एक्सप्रेशन का उपयोग करके पॉपुलेट करता हूं।
कनेक्शन स्ट्रिंग अभिव्यक्ति इस तरह दिखती है:
"प्रदाता = Microsoft.ACE.OLEDB.12.0; डेटा स्रोत =" + @ [उपयोगकर्ता :: SourceFilePath] + "; विस्तारित गुण = \" EXCEL 12.0 XML; HDR = YES \ ";"
SSIS Pacakge को एक विंडोज़ यूज़रनेम / अकाउंट द्वारा निष्पादित किया जाता है। मुझे लगता है कि यह एक वेब सेवा खाता हो सकता है। (BDS_sprtIIS)
क्या किसी के पास कोई समाधान या सुझाव है कि कैसे पैकेज के इस मुद्दे को हल करने के लिए केवल मेरी स्थानीय मशीन पर काम करना चाहिए, लेकिन वास्तविक सर्वर पर नहीं जहां पैकेज को तैनात किया जाएगा?
मुझे एक और मंच पर नीचे उत्तर मिला, क्या यह हो सकता है जो मेरे मुद्दों का कारण बन रहा है? वे मूल रूप से कह रहे हैं कि एक्सेल कनेक्शन प्रबंधक किसी कारण से उपयोगकर्ताओं के अस्थायी फ़ोल्डर तक पहुँचने का प्रयास करता है और यदि उस फ़ोल्डर तक उसकी पहुँच नहीं है, तो यह विफल हो जाएगा:
मैंने यह भी देखा कि Microsoft.JET.OLEDB.4.0 ड्राइवर उपयोगकर्ता में लॉग इन की प्रोफ़ाइल के नीचे अस्थायी निर्देशिका को पढ़ने का प्रयास करेगा।
।
... हम अपने SQL एजेंटों को निचले स्तर के डोमेन खाते का उपयोग करके चलाते हैं और प्रॉक्सी खाते का उपयोग करके हमारे SSIS पैकेज चलाते हैं। आप सही हैं क्योंकि Procmon ने मेरे लिए भी इसकी पुष्टि की है। मैंने प्रोफ़ाइल के अस्थायी निर्देशिका (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp) को प्रॉक्सी खाता अधिकार दिया और यह काम कर गया!
मैं SQL सर्वर जॉब्स या प्रॉक्सी खातों का उपयोग नहीं कर रहा हूं। पैकेज को केवल एक विंडोज़ खाते द्वारा निष्पादित किया जाता है, जो संभवतः कमांड लाइन स्क्रिप्ट के माध्यम से होता है।
विंडोज़ खाते में फ़ाइल तक पहुंच है, लेकिन मुझे यकीन नहीं है कि अगर इसकी पहुंच "TEMP" फ़ोल्डर तक है (जो मैं पैकेज में कभी संदर्भ नहीं देता हूं, तो मुझे नहीं पता कि उस फ़ोल्डर तक पहुंच की आवश्यकता क्यों है) ...