SSIS ส่งออกข้อมูลใน Excel 2007
หน้าแรก SQL Server SSIS ส่งออกข้อมูลใน Excel 2007
รวมบริการรองรับไฟล์ Excel มาตรฐานแต่ไม่ Excel ไฟล์ที่สร้างขึ้นใน Office 2007. ไฟล์เหล่านี้ได้ในความเป็นจริงต่อต่าง (. Xlsx). จาก SSIS เพื่อเชื่อมต่อไปยังคุณสร้างไดรเวอร์ OLEDB ติดตั้ง. นี้สามารถดาวน์โหลด เดี๋ยวนี้.
หลังจากติดตั้งคุณสามารถสร้างแหล่ง OLEDB กับผู้ให้บริการและ Microsoft Office 12 Access Database Engine OLE DB Provider. กรอกตำแหน่งของชื่อเซิร์ฟเวอร์ใน Excel แผ่น. กรอก ALL แท็บในมูลค่า Extented Properties '' 'Excel 12.0 ช่อง XML ". XML เป็นสำคัญ. ใส่ Excel เท่านั้น 12.0 ในไฟล์ออกจะแฟ้มไบนารี, สิ่งที่คุณต้องการแต่ไม่. ดู ที่นี่ สำหรับข้อมูลเพิ่มเติม.

สร้างคอลัมน์ในแผ่นงาน Excel เพื่อล่วงหน้ามิฉะนั้นคุณจะได้รับปัญหากับการแมปในปลายทางของคุณ โยนทุกฟิลด์ในแหล่ง OLEDB เพื่อ nvarchar ของ Excel 2007 เวลาสตริง Unicode
. คุณไม่ได้รับข้อผิดพลาดเหล่านี้ไม่สามารถแปลงระหว่าง Unicode และไม่ใช่ประเภทสตริงยูนิโค้ดข้อมูล.
ปัญหาถัดไปเป็นตะกอนของ Excel File. คุณต้องการในแต่ละวันมีการถ่ายโอนข้อมูลรุ่น. ถ้า Excel ไฟล์ที่คุณจะไม่ยอบเวลาแพคเกจ SSIS ทำงานเพิ่มข้อมูลทุก. คุณจะได้รับข้อมูลซ้ำ.
โดยใช้คำสั่ง OPENROWSET ใน SQL Server ทำให้ข้อมูลจาก Excel ไฟล์ที่คุณปรึกษา. เมื่อคุณรันโปรแกรมนี้ครั้งแรกที่คุณได้รับข้อผิดพลาดดังต่อไปนี้
"SQL Server ถูกบล็อคการเข้าถึง OPENROWSET งบ '/ Source Open Data" หรือองค์ประกอบ' โฆษณานักเรียน Distributed ค้นหา 'เพราะส่วนนี้ถูกปิดเป็นส่วนหนึ่งของการกำหนดค่าความปลอดภัยสำหรับเซิร์ฟเวอร์นี้. ผู้ดูแลระบบสามารถเปิดใช้' โฆษณานักเรียน Distributed ค้นหา ' โดยใช้ sp_configure .. "
คุณสามารถแก้นี้โดยคำแถลงต่อไปนี้เพื่อรัน (ดูที่นี่สำหรับข้อมูลเพิ่มเติม):
'show advanced options' , 1 ; แสดง Sp_configure 'ตัวเลือกขั้นสูง', 1; โก ; กำหนดค่า; โก 'Ad Hoc Distributed Queries' , 1 ; Sp_configure 'โฆษณานักเรียน Distributed ค้นหา', 1; โก ; กำหนดค่า; โก
แต่คุณสามารถใช้ T-SQL ไม่ได้ลบข้อมูลจากแผ่นงาน Excel แล้วคุณจะได้รับข้อผิดพลาดนี้:
"การลบข้อมูลในตารางที่เชื่อมโยงไม่สนับสนุน ISAM นี้".
สามารถเรียกมันด้วยคำต่อไปนี้
* เลือก * ( 'Microsoft.ACE.OLEDB.12.0' , 'Excel 12.0 Xml;Database=C: D ebiteuren.xlsx' , 'SELECT * FROM [Sheet1$B1:F3]' ) ; จาก OPENROWSET ( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 XML; Database = C: ebiteuren.xlsx D', 'เลือก * FROM [F3 $ B1: Sheet1]');
ทราบว่าคุณได้อ่านเข้าใช้ไฟล์ที่คุณต้องการปรึกษาคุณจะได้รับข้อผิดพลาดดังต่อไปนี้
ข้อความ Error: ให้ OLE DB Microsoft.ACE.OLEDB.12.0 "สำหรับเซิร์ฟเวอร์ที่เชื่อมโยง" (โมฆะ) "รายงานข้อผิดพลาด. Access denied.
มันไม่สามารถล้างข้อมูลในไฟล์ Excel มีปัญหา. ฉันไม่ได้ไปยังไฟล์ Excel ที่ว่างและกรอก. โซลูชั่นต้องขอในอีก-สร้างของไฟล์.
Solution
วิธีคือง่ายๆธรรม. ด้านล่างตามขั้นตอนที่ควรจะผ่านไปยังไฟล์ Excel กรอกเรียบร้อย.
ขั้นตอน 1) สร้างแม่แบบที่คุณต้องการใส่ไฟล์ Excel. Headerrij เพียงเพื่อให้ถ้วย. ไม่ใส่ข้อมูลในไฟล์นี้. ที่เทมเพลทนี้ในโฟลเดอร์เช่น c: รายงาน แม่. สร้างโฟลเดอร์ที่ไฟล์เพื่อเช่น: c: รายงาน เต็ม
ขั้นตอน 2) สร้าง SSIS Package มี 2 File System Task. ใน Task 1 คุณลบไฟล์ใน เต็ม. ใน Task 2 kopieeer แม่แบบจาก c: รายงาน แม่แบบของคุณ -> c: รายงาน เต็ม
ขั้นตอน 3) สร้าง Data-Flow Task ให้ข้อมูลในปั๊ม.

คุณมี 3 ผู้จัดการการเชื่อมต่อที่จำเป็นสำหรับแก้ปัญหานี้. ที่หมายถึงแม่แบบที่อ้างถึงไฟล์เต็มและสำหรับกรอก Excel 2007 file (Connection OLEDB).

ขึ้นไปด้านบน
