मेरे पास SQL Server 2012 डेटाबेस और 3 मिलियन पंक्तियों और शायद 50 कॉलमों वाली एक तालिका होगी। एक अनअटेंडेड बैकग्राउंड .net प्रक्रिया के लिए सबसे तेज़ तरीका क्या होगा (शायद कुछ SQL या Powershell कमांड जारी करता है) इसे टेक्स्ट फाइल, डेटा की प्रत्येक पंक्ति के लिए एक लाइन एक्सपोर्ट करने के लिए? .Net प्रक्रिया को पता होना चाहिए कि निर्यात समाप्त हो गया है या यदि कोई त्रुटि थी। डेटाटाइप सभी int
या होगा nvarchar
।
मैं यह मान रहा हूं कि select *
कमांड को निष्पादित करने के लिए ado.net का उपयोग करने वाला शुद्ध C # कोड और डेटारीडर पर लूपिंग और प्रत्येक रिकॉर्ड के लिए एक फाइल पर लिखना धीमा होगा और ऐसा कोई तरीका नहीं है जिससे मैं इसे समानांतर कर सकूं।
आदर्श रूप से निर्यात दूरस्थ साझा नेटवर्क फ़ोल्डर में होगा और SQL सर्वर मशीन पर स्थानीय फ़ोल्डर नहीं होगा। SQL सर्वर हा क्लस्टर होगा। क्या SSIS इसके लिए बेहतर अनुकूल है, कोई डेटा परिवर्तन की आवश्यकता नहीं है?
.Net प्रक्रिया मशीन A पर चलेगी, मशीन B पर SQL सर्वर और अंतिम फ़ाइल गंतव्य एक नेटवर्क शेयर है। एक विकल्प है SQL सर्वर नेटवर्क साझा करने के लिए सीधे फ़ाइल लिखता है। अन्य विकल्प SQL सर्वर मशीन A को लिखता है और फिर जब फ़ाइल लिखी जाती है .net प्रक्रिया इसे नेटवर्क शेयर में कॉपी कर देती है। मेरे पास औपचारिक एसएलए नहीं है, लेकिन फाइल लिखने के लिए 30 मिनट - 1 घंटा की उम्मीद है।
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
- .NET ऐप कहां से चलेगा? सबसे खराब स्थिति, इसका मतलब यह हो सकता है कि डेटा को 2 नेटवर्क हॉप्स के माध्यम से आगे बढ़ना है, जो संभवतः सबसे बड़ी अड़चन होगी। इसके अलावा, पंक्तियों की संख्या कुछ हद तक अप्रासंगिक है - अनुमानित कुल डेटा आकार क्या है? क्या आपके पास एक प्रदर्शन SLA है जिसे आपको इस प्रक्रिया के लिए पूरा करने की आवश्यकता है?