ฉันจะมีฐานข้อมูล SQL Server 2012 และตารางที่มี 3 ล้านแถวและอาจ 50 คอลัมน์ สิ่งใดจะเป็นวิธีที่เร็วที่สุดสำหรับกระบวนการเบื้องหลัง. net (อาจออกคำสั่ง SQL หรือ Powershell) เพื่อส่งออกไปยังไฟล์ข้อความหนึ่งบรรทัดสำหรับแต่ละแถวของข้อมูล? กระบวนการ. net ควรทราบเมื่อการส่งออกเสร็จสิ้นหรือมีข้อผิดพลาดใด ๆ ประเภทข้อมูลจะทั้งหมดหรือint
nvarchar
ฉันสมมติว่ารหัส C # บริสุทธิ์โดยใช้ ado.net เพื่อดำเนินการselect *
คำสั่งและวนซ้ำไปที่ชุดข้อมูลและการเขียนไปยังไฟล์สำหรับแต่ละระเบียนจะช้าและไม่มีวิธีใดที่ฉันสามารถทำให้ขนานกันได้
เป็นการดีที่การส่งออกจะไปยังโฟลเดอร์เครือข่ายระยะไกลที่ใช้ร่วมกันไม่ใช่โฟลเดอร์บนเครื่อง SQL Server SQL Server จะเป็นคลัสเตอร์ HA SSIS เหมาะสมกับสิ่งนี้มากกว่าหรือไม่ไม่จำเป็นต้องแปลงข้อมูล
กระบวนการ. Net จะทำงานบน Machine A, SQL Server บน Machine B และปลายทางไฟล์ที่ดีที่สุดคือการแชร์เครือข่าย ทางเลือกหนึ่งคือเซิร์ฟเวอร์ SQL จะเขียนไฟล์โดยตรงไปยังเครือข่ายที่ใช้ร่วมกัน ตัวเลือกอื่นคือ SQL Server เขียนไปยังเครื่อง A แล้วเมื่อไฟล์ถูกเขียนกระบวนการ. net คัดลอกไปยังเครือข่ายที่ใช้ร่วมกัน ฉันไม่มี SLA ที่เป็นทางการ แต่คาดว่าจะใช้เวลา 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 ของประสิทธิภาพที่คุณต้องการสำหรับกระบวนการนี้หรือไม่?