Như Philip đã nói ... trước tiên hãy kiểm tra việc thực thi xp_cmdshell. Nếu nó không chạy do vấn đề về quyền thì trước tiên hãy định cấu hình lại tùy chọn này bằng cách chạy
SP_CONFIGURE 'XP_CMDSHELL',1
GO
RECONFIGURE
sau khi chạy lệnh sau để bật quyền máy chủ được liên kết cho các khả năng InProcess cho trình điều khiển ACE:
USE [master]
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
Bây giờ hãy chạy chuỗi lệnh sau:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
nếu gặp lỗi thì hãy chạy từng lệnh riêng biệt. Và cuối cùng chạy nhập tất cả dữ liệu excel của bạn vào máy chủ SQL bằng cách chạy lệnh được đề cập bên dưới:
SELECT * INTO TargetTableName FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=FilePath\fileName.xlsx;HDR=YES',
'SELECT * FROM [sheetName$]')
Hãy nhớ rằng trong trường hợp xls, bạn phải sử dụng Jet Driver thay vì ACE. Và TargetTableName cũng không được tồn tại trước khi chạy truy vấn này.