วันพฤหัสบดีที่ 11 เมษายน พ.ศ. 2556

Can’t import excel by Store procedure


เรื่องของเรื่องมีอยู่ว่า จากเดิมที่นกต้องเขียน Store procedure เพื่อ Import excel ใช่ม่ะ
นกก็เขียนปกติ  Openrowset(‘Microsoft.Jet.OLEDB.4.0′,‘Excel 8.0;Database=c:\excel.xls;HDR=Yes’,‘SELECT * FROM [Sheet1$]‘)
Import excel ใช่ม่ะมันก็ใช้งานได้ปกติถ้าใช้กับเครื่องนกเอง และ sc_server หรือ scbackup แต่พอเอาไปใช้อีก server (dbsv02)
ปรากฎว่าไม่ได้เรื่องมี error แดงแจ๋เลย
 
OLE DB provider "Microsoft.jet.OLEDB.4.0" for linked server "(null)" returned message "Unspecified error".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.jet.OLEDB.4.0" for linked server "(null)".
 
ตอนแรกนกคิดว่าเป็นเพราะ dbsv02 ไม่ได้ลง excel ปรากฏว่ามันไม่ใช่อ่ะ สาเหตุที่ขึ้น error แบบนี้สำหรับกรณีที่นกเจอคือ
ไฟล์เอกเซลที่นกเซฟเป็นเวอร์ชั่น 2003 หน่ะ คือนกใช้เวอร์ชั่น 2007 ไงแม้จะ save as เป็น 2003 มันก็ยังคงมีปัญหาอยู่
ดังนั้นต้องไป Download Provider ใหม่ก่อนนะ สามารถไปดูได้ที่นี่http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en จากนั้นก็เวลาเรียกใช้ Openrowset แทนที่จะเรียกจาก Excel 8.0 ก็เรียกจาก Excel 12.0 แทนและ
โดยมีตัวอย่างการเรียกแบบนี้นะ Openrowset(‘Microsoft.ACE.OLEDB.12.0′,‘Excel 12.0;Database=c:\excel.xls;HDR=Yes’,‘SELECT * FROM [Sheet1$]‘นกไฮไลน์ตัวที่ต้องเปลี่ยนแล้วล่ะ แค่นี้ก็จะใช้งานได้แล้วนะ
 

0 ความคิดเห็น:

แสดงความคิดเห็น