2008-08-07 7 views
10

SQL सर्वर संग्रहीत प्रक्रिया से FTP आदेशों को निष्पादित करने के लिए सबसे अच्छी विधि क्या है? हम वर्तमान में इस तरह कुछ उपयोग करते हैं:एसक्यूएल सर्वर 2005 संग्रहीत प्रक्रिया से एफ़टीपी के लिए सबसे अच्छा अभ्यास क्या है?

EXEC master..xp_cmdshell 'ftp -n -s:d:\ftp\ftpscript.xmt 172.1.1.1' 

समस्या यह है कि एफ़टीपी त्रुटि में समाप्त होने पर भी आदेश सफल होने लगता है। इसके अलावा, xp_cmdshell का उपयोग विशेष अनुमतियों की आवश्यकता है और सुरक्षा समस्याओं के लिए कमरे छोड़ सकता है।

उत्तर

4

यदि आप SQL 2005 चला रहे हैं तो आप इसे सीएलआर एकीकरण असेंबली में कर सकते हैं और एक सरल एफ़टीपी क्लाइंट बनाने के लिए System.Net नामस्थान में एफ़टीपी कक्षाओं का उपयोग कर सकते हैं।

आपको अपवादों को फंसाने और संभालने में सक्षम होने और xp_cmdshell का उपयोग करने के सुरक्षा जोखिम को कम करने में लाभ होगा।

बस कुछ विचार।

2

यदि आपको डेटाबेस के भीतर से एफ़टीपी करने की आवश्यकता है, तो मैं केविन के सुझाव के रूप में एक .NET असेंबली के साथ जाऊंगा। इससे प्रक्रिया पर अधिक नियंत्रण मिलेगा, साथ ही आप रिपोर्टिंग के लिए तालिका में सार्थक त्रुटि संदेशों को लॉग इन करने में सक्षम होंगे।

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

3

डीटीएस या एकीकरण सेवाओं (एसक्यूएल सर्वर 7 या 2000 के लिए डीटीएस, 2005 या उच्चतर के लिए डीटीएस) का उपयोग करने की एक और संभावना है। दोनों माइक्रोसॉफ्ट से हैं, एसक्यूएल सर्वर स्थापना (कम से कम मानक संस्करण में) में शामिल हैं और एक एफ़टीपी कार्य है और एसक्यूएल सर्वर से आयात/निर्यात नौकरियों के लिए डिज़ाइन किए गए हैं।

1

केवी ने एक उदाहरण over here पोस्ट किया जो "सीएलआर एकीकरण असेंबली में ऐसा करने के लिए अपने सिस्टम को लागू करता है और सिस्टम में एफ़टीपी कक्षाओं का उपयोग करता है। एक सरल एफ़टीपी क्लाइंट बनाने के लिए नेमस्पेस नाम।"

संबंधित मुद्दे

 संबंधित मुद्दे