मुझे ऐसा लगता है, कि आप अपने प्रश्न के उत्तर में SQL कोड की प्रतीक्षा नहीं कर रहे हैं। आपके प्रश्न का मुख्य पहलू सुरक्षा पहलू है। sysadmin . के बिना अपनी आवश्यकता को लागू करने के लिए आपको क्या करना चाहिए? विशेषाधिकार और एक नए सुरक्षा छेद के बिना? मुझे लगता है कि यह आपका असली सवाल है।
मैं आपकी समस्या को हल करने के लिए कम से कम 3 तरीके देखता हूं। लेकिन सबसे पहले एक संक्षिप्त स्पष्टीकरण कि विस्तारित संग्रहीत कार्यविधियाँ के आधार पर सभी समाधानों में sysadmin विशेषाधिकार क्यों मौजूद हैं . विस्तारित संग्रहीत कार्यविधियाँ जैसे xp_cmdshell बहुत पुराने हैं। वे कम से कम SQL सर्वर 4.2 से पहले मौजूद थे, पहला Microsoft SQL सर्वर जो पहले Windows NT (NT 3.1) के तहत चल रहा था। SQL सर्वर के पुराने संस्करण में मैं ऐसी प्रक्रियाओं को निष्पादित करने के लिए सुरक्षा प्रतिबंध नहीं था, लेकिन बाद में इस तरह के प्रतिबंध लगा दिए। यह समझना महत्वपूर्ण है कि सभी सामान्य उद्देश्य प्रक्रियाएँ जो किसी भी प्रक्रिया को प्रारंभ करने की अनुमति देती हैं SQL सर्वर खाते के अंतर्गत जैसे xp_cmdshell और sp_OACreate होना चाहिए sysadmin है विशेषाधिकार प्रतिबंध। केवल एक कार्य उन्मुख उपयोग के स्पष्ट क्षेत्र और भूमिका आधारित अनुमतियों के साथ प्रक्रियाएं सुरक्षा छेद के बिना समस्या का समाधान कर सकती हैं। तो ये हैं 3 समाधान के तरीके जिनका मैंने पहले वादा किया था:
- आप अपने SQL सर्वर पर sysadmin . के साथ एक नया SQL खाता बनाते हैं विशेषाधिकार फिर आप एक संग्रहीत कार्यविधि बनाते हैं जो विस्तारित संग्रहीत कार्यविधियों . से कुछ का उपयोग करती है जैसे
xp_cmdshellयाsp_OACreateऔर तकनीकी रूप से आपकी आवश्यकताओं को लागू करें (कुछ जानकारी को CSV फ़ाइल में निर्यात करें)। इस रूप में निष्पादित करें . के संबंध में खंड (देखें https://msdn.microsoft.com/en-us/ पुस्तकालय/ms188354.aspx ) आप बनाई गई संग्रहीत कार्यविधि को इस प्रकार कॉन्फ़िगर करते हैं, कि वह sysadmin . के साथ खाते के अंतर्गत चलती है विशेषाधिकार अनुमति के प्रतिनिधिमंडल की ओर से अधिक लचीला होने के लिए, आप इस प्रक्रिया के निष्पादन को कुछ SQL भूमिका वाले उपयोगकर्ताओं को सौंपते हैं। - आप CLR संग्रहीत कार्यविधियों का उपयोग कर सकते हैं इसके बजाय
xp_cmdshellऔरsp_OACreate. आपको बनाई गई प्रक्रिया पर भूमिका आधारित अनुमतियों का भी उपयोग करना चाहिए। - अंतिम उपयोगकर्ता आपके द्वारा बनाई गई किसी भी SQL संग्रहीत कार्यविधि को सीधे कॉल नहीं करता है। सॉफ़्टवेयर का एक टुकड़ा मौजूद है (जैसे डब्ल्यूसीएफ सेवा या वेब साइट) जो आपकी एसक्यूएल संग्रहीत प्रक्रिया को कॉल करता है। आप CSV फ़ाइल में निर्यात को इस सॉफ़्टवेयर के अंदर लागू कर सकते हैं, किसी SQL संग्रहीत प्रक्रिया के अंदर नहीं।
कार्यान्वयन के सभी तरीकों में आपको सटीक रूप से परिभाषित करना चाहिए कि आप पासवर्ड कहां रखेंगे जिस खाते से आप फ़ाइल सिस्टम तक पहुँच प्राप्त करते हैं। आपके पास अलग-अलग विकल्प हैं, सभी संबंधित फायदे और नुकसान के साथ। अंतिम-उपयोगकर्ता के खाते के साथ फ़ाइल सिस्टम तक पहुंच की अनुमति देने के लिए प्रतिरूपण का उपयोग करना संभव है। सबसे अच्छा तरीका उस स्थिति पर निर्भर करता है जो आपके वातावरण में है।