Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chạy gói SSIS bằng dtexec

Lỗi đầu tiên tôi muốn giải quyết là "Trình quản lý kết nối Excel không được hỗ trợ trong phiên bản 64-bit của SSIS, vì không có nhà cung cấp OLE DB nào."

Các trình điều khiển Excel chỉ tồn tại trong không gian địa chỉ 32 bit. BIDS / SSDT là một ứng dụng 32 bit nên nguồn và đích đến của Excel hoạt động tốt. Tuy nhiên, khi bạn chạy chúng từ dòng lệnh / Tác nhân SQL, thì bạn cần sử dụng rõ ràng phiên bản 32 bit của chương trình DTEXEC.

Bước 1, sẽ đảm bảo bạn có thể chạy gói từ dòng lệnh trên máy chủ mà tác nhân thực thi trên đó với tư cách là chính bạn. Giả sử SQL Server của bạn được cài đặt ở vị trí thông thường, bạn có thể có một trong các DTEXEC.exe sau đây sẵn sàng cho bạn

C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe

Bạn sẽ muốn sử dụng phiên bản (x86). Các độc giả trong tương lai, nếu bạn đang sử dụng phiên bản Windows 32 (có thể là Windows 2003), thì 3 phiên bản đầu tiên sẽ là lựa chọn duy nhất dành cho bạn. Như thông báo lỗi của Vivek đã chỉ ra, anh ta đang thực thi một gói SSIS ở chế độ 64 bit.

dtexec cung cấp công tắc dòng lệnh / X86 để cho phép bạn sử dụng liền mạch cùng một tệp thực thi cho cả hoạt động 32 và 64 bit. THÍCH! Tài liệu gọi ra điều đó nhưng ai đọc tài liệu?

Tùy chọn này chỉ được sử dụng bởi SQL Server Agent. Tùy chọn này bị bỏ qua nếu bạn chạy tiện ích dtexec tại dấu nhắc lệnh.

Vì vậy, bạn sẽ cần chạy gói của mình bằng cách cung cấp đường dẫn rõ ràng

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /file C:\folder\GICSReport.dtsx

Tôi thấy "Không giải mã được nút XML được bảo vệ" trong đầu ra của bạn và bạn cũng cho biết bạn đang sử dụng tệp cấu hình nên rất có thể bạn có thể thay đổi PackageProtectionLevel của mình từ EncryptSensitiveWithUserKey mặc định thành DontSaveSensitive. Tính năng đó tồn tại để ngăn việc vô tình để lộ dữ liệu nhạy cảm (mật khẩu) nhưng vì bạn đã xử lý điều đó với các tệp cấu hình, nên đó không phải là vấn đề. ... Đó thực sự có thể là lỗi từ một trong các mức bảo vệ gói khác mà tôi nghĩ về nó.

Ở bất kỳ mức độ nào, hãy thử chạy từ tệp thực thi 32 bit trước. Nếu điều đó không hiệu quả, hãy thử thay đổi mức độ bảo vệ gói như đã chỉ ra. Nếu một trong hai cách đó làm cho gói chạy như mong đợi, thì hãy thử chạy cùng một lệnh từ Tác nhân SQL.

Nếu tất cả đều hoạt động, hãy đánh dấu đây là câu trả lời. Nếu không, vui lòng cập nhật vé với lỗi hiện tại đang được tạo và chúng tôi sẽ yêu cầu thêm thông tin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra sao lưu máy chủ SQL

  2. Cột được tính toán trong Mã EF Đầu tiên

  3. Chế độ xem trong SQL Server

  4. Cách bật tính năng ghi dữ liệu thay đổi (CDC) trên cơ sở dữ liệu trong SQL Server - Hướng dẫn sử dụng máy chủ SQL

  5. Khám phá các tùy chọn chờ khóa ưu tiên thấp trong SQL Server 2014 CTP1