SELECT * FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=D:\YourExcelFile.xlsx;
User=Admin;Password=;HDR=Yes;IMEX=1',
'SELECT * FROM [Sheet1$]');
แล้วเกิด Error เช่น
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)"
returned message "Unspecified error"
ก่อนอื่นก็ต้องไปดูที่ โปรแกรม Microsoft SQL Server Manage Studio
เปิดหน้าต่าง New Query... แล้วพิมพ์คำสั่ง
exec sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE
exec sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE WITH OVERRIDE
กดปุ่ม F5
เปิดหน้าต่าง New Query... แล้วพิมพ์คำสั่ง
exec sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE
exec sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE WITH OVERRIDE
กดปุ่ม F5
จากนั้น ที่หน้าต่าง Object Explorer ดูตรง Linked Servers ว่าเรามี Provider ชื่อ Microsoft.ACE.OLEDB.12.0 อยู่แล้ว ดังภาพ
จากนั้นคลิกเมาส์ปุ่มขวา เลือก Properties จากนั้นให้คลิกเลือกที่
Dynamic parameter และ Allow inprocess แล้วคลิกปุ่ม OK
Dynamic parameter และ Allow inprocess แล้วคลิกปุ่ม OK
จากนั้นไปทำการสำรวจ folder ที่เป็นพื้นที่เก็บข้อมูลชั่วคราวหรือ Temp file ซึ่งก็จะอยู่ภายใต้ Folder ชื่อ C:\User\ชื่อผู้ใช้\AppData\Local (ไฟล์จะถูกซ่อนอยู่ แต่ละเครื่องอาจจะอยู่คนละที่กัน ลอง Search หาดู)
จากนั้นคลิกเมาส์ปุ่มขวาที่ folder ชื่อ Temp เลือก Properties
แล้วเอา Attribute ตรง Read-Only ออก
และทำเช่นเดียวกันกับ โฟลดเดอร์ Temp ที่อยู่ใน
C:\Windows\ServiceProfiles\LocalService\AppData\Local
เท่านี้ก็ทำให้เราสามารถแก้ไขปัญหา Error ที่เกิดขึ้นกับการเปิดไฟล์ Excel จากภายนอกได้แล้ว
สวัสดี มีความสุข