BULK INSERT के लिए असंवैधानिक प्रतिनिधिमंडल को कॉन्फ़िगर करें


12

मेरे पास हमेशा उपलब्ध उपलब्धता समूह में Microsoft SQL Server 2016 नोड्स की एक जोड़ी है। मैं BULK INSERTWindows Server 2016 फ़ाइल सर्वर विफलता क्लस्टर पर स्थित फ़ाइल पर (SQL सर्वर 2016 प्रबंधन स्टूडियो क्वेरी का उपयोग करके) प्रदर्शन करने का प्रयास कर रहा हूं , लेकिन मुझे निम्न त्रुटि मिलती है:

एमएसजी 4861, लेवल 16, स्टेट 1
बल्क लोड नहीं कर सकता क्योंकि फ़ाइल "\ nas2.my.domain \ Microsoft SQL Server 2016 Enterprise \ test.txt" को खोला नहीं जा सका। ऑपरेटिंग सिस्टम त्रुटि कोड 5 (प्रवेश निषेध है।)।

यदि मैं सक्रिय नोड नाम ( nas2.my.domain) या विफलता क्लस्टर श्रोता ( nas.my.domain) का उपयोग करता हूं, तो इसकी परवाह किए बिना होगा ।

चारों ओर देखने के बाद मुझे पता चला कि यह SQL सर्वर उस उपयोगकर्ता खाते को लागू करने में असमर्थ होने के कारण है जिसके साथ मैं बारीकियों के कारण जुड़ा हुआ हूं BULK INSERT

यदि आप Windows प्रमाणीकरण का उपयोग करते हुए SQL सर्वर से कनेक्ट करते हैं, तो SQL सर्वर सेवा खाता फ़ाइल सर्वर से कनेक्ट करते समय आपके उपयोगकर्ता खाते को प्रतिरूपण करने का प्रयास करता है। यदि आप SQL सर्वर प्रमाणीकरण का उपयोग करके कनेक्ट करते हैं, तो यह फ़ाइल सर्वर से SQL सर्वर सेवा खाते के रूप में कनेक्ट होगा।

यदि प्रतिनिधिमंडल और प्रतिरूपण को ठीक से कॉन्फ़िगर नहीं किया गया है (डिफ़ॉल्ट स्थिति), तो SQL सर्वर सेवा आपके उपयोगकर्ता खाते को प्रतिरूपण करने में सक्षम नहीं होगी और अनाम उपयोगकर्ता के रूप में फ़ाइल सर्वर से कनेक्ट करने का प्रयास करने के लिए वापस गिर जाएगी।

इसकी पुष्टि फ़ाइल सर्वर पर सुरक्षा ईवेंट लॉग के माध्यम से देखकर की जा सकती है। इन तथ्यों के साथ-साथ अप्रशिक्षित और विवश प्रतिनिधिमंडल को कॉन्फ़िगर करने पर एक गाइड इन तथ्यों को इन लिंक्स में दर्ज़ किया गया है:

मैं thesqldude गाइड में निर्देशों का पालन करने की कोशिश की है, लेकिन यह अभी भी काम नहीं कर रहा है।

मैं जिस डेटाबेस की कोशिश कर रहा हूं BULK INSERTवह उपलब्धता समूह का हिस्सा नहीं है, इसलिए केवल MSSQL1 नोड प्रासंगिक होना चाहिए। फ़ाइल सर्वर NAS2 नोड पर सक्रिय था। फ़ाइल सर्वर पर ईवेंट लॉग की जाँच करने से पता चलता है कि यह अभी भी इस समस्या से पीड़ित है और SQL सर्वर मेरे उपयोगकर्ता खाते का प्रतिरूपण करने के बजाय एक अनाम उपयोगकर्ता के रूप में फ़ाइल सर्वर को प्रमाणित करने का प्रयास कर रहा है।

क्या किसी को पता है कि क्या गलत हो रहा है? या यदि इन गाइडों को अप्रचलित बनाने के लिए SQL Server 2016 में कुछ बदला गया है?

मैं पुष्टि कर सकता हूं कि इस GPO को MSSQL1 के माध्यम से लागू किया गया है gpresult.exe /R, और किसी भी कैश को फ्लश करने के लिए SQL और फ़ाइल सर्वर नोड दोनों को बाद में रिबूट किया गया था।


1
दो प्रश्न: 1) क्या आपने प्रतिनिधि के लिए अपने व्यक्तिगत विंडोज डोमेन खाते को सक्षम करने का प्रयास किया ?, 2) जब आप SSMS के माध्यम से SQL सर्वर से कनेक्ट होते हैं, तो क्या आप उस सर्वर (यानी रिमोट डेस्कटॉप) पर लॉग इन होते हैं, जो SQL सर्वर स्थानीय रूप से चालू और कनेक्ट हो रहा है, या अपने वर्कस्टेशन पर लॉग इन करें और SQL सर्वर से दूरस्थ रूप से कनेक्ट करें? यदि आपने सीधे सर्वर पर लॉगिंग और SSMS के माध्यम से स्थानीय रूप से कनेक्ट करने का प्रयास नहीं किया है, तो कोशिश करें। यदि आपने प्रतिनिधि के लिए अपने डोमेन खाते को सक्षम करने का प्रयास नहीं किया है, तो कोशिश करें।
सोलोमन रटज़की

जवाबों:


1

आपका कॉन्फ़िगरेशन ठोस दिखता है। SPN और डेलिगेशन कॉन्फ़िगर किए गए हैं जैसा कि मैंने खुद किया होगा।

केवल एक चीज जिसकी आपने व्याख्या नहीं की है वह है फ़ाइल / शेयर अनुमतियां। यह वह जगह है जहाँ मेरे समाधान में कदम है।

समाधान 1 (व्यक्तिगत खाता)

  1. सत्यापित करें कि आपके व्यक्तिगत खाते को फ़ाइल सर्वर के शेयर पर फ़ाइल तक पहुंचने की अनुमति है
    • आपके व्यक्तिगत खाते को शेयर अनुमति स्तर पर कम से कम READ अनुमतियों की आवश्यकता होती है या ज्यादातर मामलों में आप देख सकते हैं कि हर किसी के पास READ अनुमति है।
    • फ़ाइल के अनुमति स्तर पर आपके व्यक्तिगत खाते को कम से कम READ अनुमतियों की आवश्यकता होती है
    • उस एक फ़ाइल के लिए फ़ाइल स्तर पर अनुमति विरासत की जाँच करें
      • फ़ाइल अनुमतियाँ बदलने या SQL सर्वर सेवा को बदलने के बाद SQL सर्वर को रिबूट करें।
    • वैकल्पिक रूप से: अपने व्यक्तिगत खाते के साथ SQL सर्वर में प्रवेश करें और शेयर से कनेक्ट करें और फ़ाइल खोलें।
  2. अपने व्यक्तिगत खाते के साथ SSMS खोलें ।
  3. Windows प्रमाणीकरण के साथ अपने SQL सर्वर आवृत्ति के लिए कनेक्शन खोलें।
    • सत्यापित करें कि आप पहले से उपयोग की गई स्क्रिप्ट के साथ SQL सर्वर सेवा खाते के साथ अपने उदाहरण से जुड़े हैं।
  4. BULK INSERT के साथ आयात करें

समाधान 2 (SQL सर्वर सेवा खाता)

  1. सत्यापित करें कि SQL सर्वर सेवा खाते को फ़ाइल सर्वर के हिस्से पर फ़ाइल तक पहुंचने की अनुमति है
    • एसक्यूएल सर्वर सेवा हिस्सेदारी अनुमति स्तर पर या ज्यादातर मामलों में आपको लगता है कि हर किसी को देख सकते हैं कम से कम पढ़ने के लिए अनुमतियां पर खाते को पढ़ने के लिए अनुमतियां है।
    • एसक्यूएल सर्वर सेवा फ़ाइल की अनुमति के स्तर पर कम से कम पढ़ने के लिए अनुमतियां पर खाते को
    • उस एक फ़ाइल के लिए फ़ाइल स्तर पर अनुमति विरासत की जाँच करें
      • फ़ाइल अनुमतियाँ बदलने या SQL सर्वर सेवा को बदलने के बाद SQL सर्वर को रिबूट करें।
    • वैकल्पिक रूप से: SQL सर्वर सेवा खाते के साथ SQL सर्वर में प्रवेश करें और शेयर से कनेक्ट करें और फ़ाइल खोलें।
  2. SQL सर्वर सेवा खाते के साथ SSMS खोलें ।
    • रनस : your_domain \ SQL_Server_service_account
    • पासवर्ड प्रदान करें
  3. Windows प्रमाणीकरण के साथ अपने SQL सर्वर के लिए एक कनेक्शन खोलें।
    • सत्यापित करें कि आप पहले से उपयोग की गई स्क्रिप्ट के साथ SQL सर्वर सेवा खाते के साथ अपने उदाहरण से जुड़े हैं।
  4. BULK INSERT के साथ आयात करें

बल्क INSERT अनुमतियाँ

सुरक्षा खाता प्रत्यायोजन (प्रतिरूपण)

यदि कोई उपयोगकर्ता SQL सर्वर लॉगिन का उपयोग करता है, तो SQL सर्वर प्रक्रिया खाते की सुरक्षा प्रोफ़ाइल का उपयोग किया जाता है। SQL सर्वर प्रमाणीकरण का उपयोग कर लॉगिन को डेटाबेस इंजन के बाहर प्रमाणित नहीं किया जा सकता है। इसलिए, जब SQL सर्वर प्रमाणीकरण का उपयोग करके लॉगिन द्वारा BULK INSERT कमांड शुरू की जाती है, तो SQL सर्वर प्रक्रिया खाते ( SQL सर्वर डेटाबेस इंजन सेवा द्वारा उपयोग किया गया खाता ) के सुरक्षा संदर्भ का उपयोग करके डेटा से कनेक्शन बनाया जाता हैस्रोत डेटा को सफलतापूर्वक पढ़ने के लिए आपको SQL सर्वर डेटाबेस इंजन द्वारा उपयोग किए गए खाते को प्रदान करना होगा , स्रोत डेटा तक पहुंच। इसके विपरीत, यदि कोई SQL सर्वर उपयोगकर्ता Windows प्रमाणीकरण का उपयोग करके लॉग ऑन करता है , तो उपयोगकर्ता केवल उन फ़ाइलों को पढ़ सकता है जिन्हें उपयोगकर्ता द्वारा एक्सेस किया जा सकता है, SQL सर्वर प्रक्रिया की सुरक्षा प्रोफ़ाइल की परवाह किए बिना।

संदर्भ: बल्क INSERT (लेनदेन-एसक्यूएल)


0

प्रतिनिधिमंडल के साथ मेरे अनुभव में, SQL सर्वर सेवा खाते को आपकी ओर से एक्सेस करने की कोशिश कर रहे हिस्से के लिए उपयुक्त अनुमति की आवश्यकता होती है। क्या आपने उन अनुमतियों को समायोजित किया है? मुझे लगता है कि केवल पढ़ने के लिए आगे बढ़ना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.