【发布时间】:2010-10-13 18:55:05
【问题描述】:
如何调试在 SSIS 包的脚本任务中编写的 .NET 代码?开发环境允许放置断点,但在调试时不会像在常规 .NET 编程中那样将我带到代码中。
另外,我不知道如何将 SSIS 包变量添加到调试监视窗口?
目前我想到的一件事是使用 msgbox。但这并不能替代使用开发环境进行的全面调试。任何帮助表示赞赏。谢谢。
【问题讨论】:
标签: .net sql-server debugging ssis
如何调试在 SSIS 包的脚本任务中编写的 .NET 代码?开发环境允许放置断点,但在调试时不会像在常规 .NET 编程中那样将我带到代码中。
另外,我不知道如何将 SSIS 包变量添加到调试监视窗口?
目前我想到的一件事是使用 msgbox。但这并不能替代使用开发环境进行的全面调试。任何帮助表示赞赏。谢谢。
【问题讨论】:
标签: .net sql-server debugging ssis
注意:如果您在 x64 上运行,则必须将项目 (SSIS) 调试属性 Run64BitRuntime 更改为 false。
之后,您将能够在 .net 中调试脚本任务,并在脚本中中断代码。
顺便说一句,John Sansom 似乎没有阅读这部分问题: 如何调试在 SSIS 包中在脚本任务中编写的 .NET 代码? 它是一个脚本任务,不是正常的 SSIS 调试。
希望这会有所帮助。
【讨论】:
在 BIDS 环境中调试 SSIS 包与使用 Visual Studio 不同。
您可能会发现参考参考Debugging How-To-Topics(SSIS) 很有用
如果您已经开发了自己的自定义组件,即从 Visual Studio 中开发,那么您应该能够在 Visual Studio 环境中调试该组件的特定功能,然后才能在 BIDS 中使用该组件。
您无法在 BIDS 中调试构成任何其他内置 SSIS 组件(即 FTP 任务)的内部 .NET 代码,因此我怀疑自定义组件会有所不同。
【讨论】:
我认为 SSIS 确实支持并在脚本任务中的断点处停止(在控制流中)。它不支持脚本转换(在数据流中)。这确实是非常不幸的限制。
当您在断点处停止时,SSIS 在监视窗口中显示变量值。我不确定脚本断点,但 SSIS 断点(预执行等)可以工作。但是你需要一个断点——你不能在没有断点的情况下随机观察变量值。
【讨论】:
确保您还运行完整的软件包。包断点的调试器在您启动之前不会启动。
调试脚本任务的工作方式类似。
【讨论】:
虽然数据流任务中的脚本组件不允许任何形式的调试,除了定期写入进度、消息框等变通方法之外
脚本任务控制流项将允许开发人员调试 SSIS 代码
最近发现了这个。 :)
【讨论】:
您可以通过在源代码的适当位置嵌入对Debugger.Break 的调用,将调试器附加到(几乎)任何您正在为其编写 .NET 代码的进程。
引用 MSDN:
如果没有附加调试器,系统会询问用户是否要附加调试器。如果是,则启动调试器。如果附加了调试器,调试器会收到用户断点事件的信号,并且调试器会暂停进程的执行,就像遇到了调试器断点一样。
我用它来调试各种东西,包括嵌入在 SSIS 中的 C# 代码。
更新:修改了措辞,因为这不再是一种理论技术,而是我使用过的技术。
【讨论】: