2012-10-26 32 views
5

Tôi đang chạy gói SSIS bằng dtexec. Gói này chạy tốt trong BIDS trên hệ thống của tôi. Khi tôi tạo một công việc đại lý máy chủ SQL để chạy các gói trên một lịch trình. Bước chạy gói được lập biểu như một nhiệm vụ T-SQL, không phải là một gói SSIS). Công việc báo cáo không có lỗi, nhưng nó thậm chí không tạo ra tệp excel đầu ra @ đích đến mong muốn của tôi trên máy chủ.Chạy Gói SSIS bằng dtexec

Hơn nữa, khi tôi chạy riêng lệnh trong trình bao lệnh, nó trả lại cho tôi các lỗi được hiển thị bên dưới. Không liên tục, nó cũng sẽ trả về các lỗi trên FileSystem Task mà tôi sử dụng để sao chép các tập tin, nói rằng nguồn hoặc đích không tồn tại !! Khi các giá trị biến tương tự làm việc cho tôi trong BIDS, tại sao công việc SQL lại thất bại?

Started: 7:33:27 PM 
Error: 2012-10-26 19:33:27.60 
    Code: 0xC0016016 
    Source: 
    Description: Failed to decrypt protected XML node "DTS:Password" with error 0 
x8009000B "Key not valid for use in specified state.". You may not be authorized 
to access this information. This error occurs when there is a cryptographic err 
or. Verify that the correct key is available. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC00F9304 
    Source: GICSReport Connection manager "Excel Connection Manager" 
    Description: SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Conne 
ction Manager is not supported in the 64-bit version of SSIS, as no OLE DB provi 
der is available. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC020801C 
    Source: Data Flow Task Excel Destination [22] 
    Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAG 
ER. The AcquireConnection method call to the connection manager "Excel Connecti 
on Manager" failed with error code 0xC00F9304. There may be error messages post 
ed before this with more information on why the AcquireConnection method call fa 
iled. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC0047017 
    Source: Data Flow Task SSIS.Pipeline 
    Description: component "Excel Destination" (22) failed validation and returne 
d error code 0xC020801C. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC004700C 
    Source: Data Flow Task SSIS.Pipeline 
    Description: One or more component failed validation. 
End Error 
Error: 2012-10-26 19:33:27.79 
    Code: 0xC0024107 
    Source: Data Flow Task 
    Description: There were errors during task validation. 
End Error 
DTExec: The package execution returned DTSER_FAILURE (1). 
Started: 7:33:27 PM 
Finished: 7:33:27 PM 
Elapsed: 0.343 seconds 

Xin trợ giúp! :) .... Tôi có nên thêm tất cả các biến, trình quản lý kết nối và mọi thứ vào tệp cấu hình của tôi không? hiện tại tôi chỉ thêm một số giá trị ppty của các biến và trình quản lý kết nối, nhưng không có combo nào hoạt động hiệu quả.

+0

+1 vì đây là một lỗi phổ biến và nhiều người có thể được hưởng lợi từ việc đọc thông qua cách giải mã tất cả các lỗi và đến một giải pháp. –

Trả lời

11

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 khả dụng."

Trong số các hộp Excel trình điều khiển chỉ tồn tại trong không gian địa chỉ 32 bit. BIDS/SSDT là ứng dụng 32 bit nên nguồn và đích Excel hoạt động tốt. Tuy nhiên, khi bạn chạy chúng từ commandline/SQL Agent, 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 rằng 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 hiện như 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 những DTEXEC.exe sau có sẵn 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 (x86) phiên bản. Người đọc trong tương lai, nếu bạn tình cờ có một phiên bản 32 của Windows (Windows 2003, có thể), 3 đầu tiên sẽ là lựa chọn duy nhất có sẵn cho bạn. Như thông báo lỗi của Vivek đã chỉ ra, anh ta đang thực hiện 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 bit và 64 bit. LIES! Tài liệu không gọi ra nhưng ai đọc tài liệu?

Tùy chọn này chỉ được sử dụng bởi Tác nhân máy chủ SQL. 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 phải chạy gói của bạn bằng cách cung cấp các đườ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 thể giải mã nút XML được bảo vệ" trong đầu ra của bạn và bạn cũng nêu bạn đang sử dụng cấu hình các tệp để 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 chặn tình cờ tiếp xúc với dữ liệu nhạy cảm (mật khẩu) nhưng vì bạn đã xử lý với các tập tin cấu hình, đó không phải là một vấn đề. ... Đó có thể thực sự là một lỗi từ một trong những cấp độ bảo vệ gói khác bây giờ mà tôi nghĩ về nó.

Ở mọi mức độ, trước tiên hãy thử chạy từ tệp thực thi 32 bit.Nếu điều đó không hoạt động, hãy thử thay đổi mức độ bảo vệ gói như được chỉ ra. Nếu một trong hai gói đó chạy gói 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 phần nà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.

+2

Câu trả lời kỹ lưỡng như Bill bình thường! –

0

Đây là giải pháp nếu bạn đang cố gắng chạy gói SSIS với dtexec từ giao dịch SQL chứa nhập excel.

  1. Tạo tệp lô có chứa mã sau.

    cd C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ DTS \ Binn \ DTEXEC.exe/DE "password"/F "C: \ mySSISfolder \ package.dtsx"

  2. Tạo lối tắt trỏ đến tệp lô của bạn, đặt properties\advanced trên phím tắt để chạy với tư cách quản trị viên.

  3. từ thủ tục sql transact bạn chạy lệnh sau

    exec xp_cmdshell 'C: \ Myfolder \ runssis_sc.lnk'

Các vấn đề liên quan