Tôi đã tạo gói SSIS nhập tệp excel vào bảng SQL Server.
Gói SSIS chạy mà không gặp vấn đề gì khi tôi chạy cục bộ trên máy của mình nhưng khi tôi chạy nó trên máy chủ nơi gói sẽ được lên lịch thì tôi gặp lỗi dưới đây (từ tệp văn bản tôi đang xuất hiện lỗi khi sử dụng ghi nhật ký SSIS).
Sau khi nghiên cứu, các khuyến nghị duy nhất tôi có thể tìm thấy là đặt thuộc tính Run64BitR.78 thành false mà tôi đã làm nhưng vẫn không gặp may. Tôi nghi ngờ đây là nguyên nhân gây ra lỗi của tôi mặc dù lỗi không chỉ định bất cứ điều gì liên quan đến 64 bit (như trường hợp trong các bài viết tôi tìm thấy).
Tôi cũng nghĩ rằng có thể Máy chủ không có trình điều khiển Excel thích hợp nhưng tôi cũng không nghĩ đó là trường hợp vì thông thường lỗi sẽ nói điều gì đó về trình điều khiển không được đăng ký.
Tôi hiện không có quyền truy cập từ xa vào máy chủ. Tôi chỉ có thể tải gói lên một thư mục và sau đó nó được chạy bởi một ứng dụng vì vậy các thông báo lỗi duy nhất tôi có thể thấy là những gì trong nhật ký lỗi văn bản tôi đã tạo.
Mã lỗi DTS_E_CANNOTACQUIRECONNMENTFROMCONNECTIONMANAGER. Cuộc gọi phương thức AcquireConnection đến trình quản lý kết nối "Envision" không thành công với mã lỗi 0xC0209303. Có thể có thông báo lỗi được đăng trước đó với nhiều thông tin hơn về lý do tại sao cuộc gọi phương thức AcquireConnection không thành công.
"Envision" là tên của trình quản lý kết nối excel của tôi.
Tôi điền Đường dẫn tệp Excel và Chuỗi kết nối bằng biểu thức.
Biểu thức chuỗi kết nối trông như thế này:
"Nhà cung cấp = Microsoft.ACE.OLEDB.12.0; Nguồn dữ liệu =" + @ [Người dùng :: SourceFilePath] + "; Thuộc tính mở rộng = \" EXCEL 12.0 XML; HDR = YES \ ";"
SSIS Pacakge được thực thi bởi tên người dùng / tài khoản windows. Tôi nghĩ rằng nó có thể là một tài khoản dịch vụ web. (BDS_sprtIIS)
Có ai có bất kỳ giải pháp hoặc đề xuất nào về cách giải quyết vấn đề này của gói chỉ hoạt động trên máy cục bộ của tôi chứ không phải trên máy chủ thực tế nơi gói sẽ được triển khai không?
Tôi tìm thấy câu trả lời dưới đây trên một diễn đàn khác, nó có thể là nguyên nhân gây ra vấn đề của tôi không? Về cơ bản, họ nói rằng trình quản lý kết nối Excel cố gắng truy cập thư mục tạm thời của người dùng vì một số lý do và nếu nó không có quyền truy cập vào thư mục đó thì sẽ thất bại:
Tôi cũng nhận thấy rằng trình điều khiển Microsoft.JET.OLEDB.4.0 sẽ cố gắng đọc thư mục tạm thời bên dưới hồ sơ của người dùng đã đăng nhập.
.
... Chúng tôi chạy Đại lý SQL bằng tài khoản miền cấp thấp hơn và chạy các gói SSIS bằng Tài khoản Proxy. Bạn đúng như Procmon đã xác nhận nó cho tôi. Tôi đã cấp quyền Tài khoản Proxy cho thư mục tạm thời của hồ sơ (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp) và nó đã hoạt động!
Tôi không sử dụng SQL Server Jobs hoặc tài khoản Proxy. Gói được thực hiện đơn giản bởi một tài khoản windows rất có thể thông qua một tập lệnh dòng lệnh.
Tài khoản windows có quyền truy cập vào tệp nhưng tôi không chắc liệu nó có quyền truy cập vào thư mục "TEMP" không (mà tôi chưa từng tham khảo trong gói nên tôi không biết tại sao cần phải có quyền truy cập vào thư mục đó) ...