2009-03-17 38 views
20

Làm cách nào để gỡ lỗi mã .NET được viết trong tác vụ tập lệnh trong gói SSIS? Môi trường phát triển cho phép đặt một breakpoint tuy nhiên không đưa tôi đến mã như nó sẽ trong lập trình .NET thông thường trong khi gỡ lỗi.Gỡ lỗi trong SSIS

Ngoài ra, tôi không hiểu cách thêm biến gói SSIS vào cửa sổ xem gỡ lỗi?

Hiện tại một điều tôi đã xác định là việc sử dụng msgbox. Nhưng thats không thay thế cho một gỡ lỗi chính thức bằng cách sử dụng môi trường phát triển. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn.

Trả lời

9

Gỡ lỗi gói SSIS trong môi trường BIDS không phải là trò chơi bóng giống như làm việc với Visual Studio.

Bạn có thể tìm thấy nó hữu ích để tham khảo tài liệu tham khảo Debugging How-To-Topics(SSIS)

Nếu bạn đã phát triển thành phần tùy chỉnh rất riêng của bạn, tức là từ bên trong visual studio, sau đó bạn sẽ có thể để gỡ lỗi các chức năng cụ thể của thành phần đó trong Visual Studio môi trường, trước khi làm cho các thành phần có sẵn để sử dụng trong BIDS.

Bạn không thể gỡ lỗi mã nội bộ .NET tạo nên bất kỳ thành phần nào khác được tạo trong các thành phần SSIS (tức là tác vụ FTP) trong BIDS vì vậy tôi nghi ngờ một thành phần tùy chỉnh sẽ khác nhau.

+0

http://msdn.microsoft.com/en-us/library/ms140033.aspx Rất bất tiện. Có, BIDS thực sự không giống VS. – Steam

1

Tôi nghĩ SSIS hỗ trợ và dừng lại trên điểm ngắt trong Tác vụ Tập lệnh (trong Luồng Điều khiển). Nó không hỗ trợ nó cho Script Transform (trong luồng dữ liệu). Đó là những hạn chế rất đáng tiếc thực sự.

SSIS hiển thị các giá trị biến trong cửa sổ xem khi bạn dừng trên điểm ngắt. Tôi không chắc chắn về breakpoint script, nhưng các điểm ngắt SSIS (on-pre-execute, vv) nó hoạt động. Nhưng bạn cần một điểm ngắt - bạn không thể xem giá trị biến tại thời điểm ngẫu nhiên mà không có điểm ngắt.

29

Lưu ý: Nếu bạn đang chạy trên x64, bạn phải thay đổi dự án (SSIS) Debug propertie Run64BitRuntime thành false.

Sau đó, bạn có thể gỡ lỗi tác vụ tập lệnh trong .net và ngắt mã trong tập lệnh.

Bằng cách John Sansom dont dường như đã đọc phần này của câu hỏi: Làm thế nào để gỡ lỗi mã NET viết trong một nhiệm vụ kịch bản trong một gói SSIS? Nhiệm vụ tập lệnh của nó, không phải là gỡ lỗi SSIS bình thường.

Hy vọng điều này sẽ hữu ích.

+7

Thay đổi thuộc tính Debug Run64BitRuntime thành false là câu trả lời. Đẹp nhất. +1 – Deano

+0

Sau khi rách tóc ra ngoài một ngày, đây là giải pháp, tôi đã nâng cấp từ giá thầu 2013 lên giá thầu năm 2015. Tôi cho rằng bản nâng cấp phải đặt lại thuộc tính thành 64 bit. – Simon

1

Bạn có thể đính kèm trình gỡ lỗi vào (gần như) bất kỳ quy trình nào bạn đang viết mã .NET bằng cách nhúng một cuộc gọi đến Debugger.Break vào thời điểm thích hợp trong nguồn của bạn.

Trích dẫn MSDN:

Nếu không có chương trình gỡ rối được đính kèm, người dùng được yêu cầu nếu họ muốn đính kèm một trình gỡ lỗi. Nếu có, trình gỡ rối được bắt đầu. Nếu một trình gỡ lỗi được đính kèm, trình gỡ rối được báo hiệu với một sự kiện điểm ngắt người dùng và trình gỡ lỗi tạm dừng thực hiện quá trình giống như một điểm ngắt trình gỡ lỗi đã được nhấn.

Tôi đã sử dụng tính năng này để gỡ lỗi tất cả các loại, kể cả mã C# được nhúng trong SSIS.

Cập nhật: Sửa đổi từ ngữ như thế này không còn là một kỹ thuật lý thuyết, nhưng một trong những Tôi đã sử dụng.

+0

Thêm dòng này không có tác dụng trong tác vụ tập lệnh SSIS – DaveRead

+1

Cuộc gọi liên quan 'Debugger.Break' hoạt động - nhưng đôi khi bạn bị mắc kẹt với gỡ lỗi ở cấp IL thay vì C#. – Bevan

+0

Điều này làm việc hoàn hảo cho tôi! Cảm ơn Bevan. –

0

dù phần Script trong dòng chảy dữ liệu công tác sẽ không cho phép bất kỳ hình thức gỡ lỗi khác hơn là cách giải quyết giống như viết tiến bộ đều đặn, hộp thư vv

The Script công tác kiểm soát luồng hàng sẽ cho phép các nhà phát triển để gỡ lỗi Mã SSIS

Tìm thấy nội dung này gần đây. :)

0

Đảm bảo bạn cũng đang chạy gói đầy đủ. Trình gỡ lỗi cho các điểm ngắt gói sẽ không khởi động cho đến khi bạn thực hiện.

Tác vụ tập lệnh gỡ lỗi hoạt động theo cách tương tự.