代码之家  ›  专栏  ›  技术社区  ›  Gnana

在SSIS中调试

  •  21
  • Gnana  · 技术社区  · 15 年前

    如何调试在SSIS包的脚本任务中编写的.NET代码?开发环境允许放置一个断点,但是不能像在调试时常规.NET编程那样带我访问代码。

    此外,我还不明白如何将SSIS包变量添加到调试监视窗口中?

    目前我想的一件事是使用msgbox。但是,这并不能替代使用开发环境进行的全面调试。感谢您的帮助。谢谢。

    6 回复  |  直到 13 年前
        1
  •  9
  •   John Sansom    15 年前

    在BIDS环境中调试SSIS包与使用Visual Studio是不同的。

    你可能会发现参考资料很有用 Debugging How-To-Topics(SSIS)

    如果您已经开发了自己的自定义组件,即从Visual Studio中开发的组件,那么您应该能够在使该组件可用于投标之前,在Visual Studio环境中调试该组件的特定功能。

    您无法调试组成BIDS中任何其他内置SSIS组件(即ftp任务)的内部.NET代码,因此我怀疑自定义组件是否会有任何不同。

        2
  •  29
  •   Gabriel Guimarães    14 年前

    注意:如果在x64上运行,则必须将项目(SSIS)调试属性run64bitsruntime更改为false。

    之后,您将能够在.NET中调试脚本任务,并在脚本中中断代码。

    顺便说一下,约翰·桑森似乎没有读过这部分问题: 如何调试编写的.NET代码 在脚本任务中 在SSIS包中? 它是一个脚本任务,而不是正常的SSIS调试。

    希望这有帮助。

        3
  •  1
  •   Michael Entin    15 年前

    我认为ssis支持脚本任务(在控制流中)中的断点并在断点处停止。它不支持脚本转换(在数据流中)。这确实是非常不幸的限制。

    当您在断点上停止时,ssis在监视窗口中显示变量值。我不确定脚本断点,但SSIS断点(在预执行时,等等)可以工作。但是你需要一个断点——你不能在没有断点的随机时刻观察变量值。

        4
  •  1
  •   Bevan    13 年前

    通过将调用嵌入到 Debugger.Break 在你的信息源中的适当位置。

    引用MSDN:

    如果没有附加调试程序,将询问用户是否要附加调试程序。如果是,则启动调试器。如果附加了调试器,则会向调试器发出用户断点事件的信号,并且调试器将挂起进程的执行,就像命中了调试器断点一样。

    我用它调试了各种各样的东西,包括嵌入在SSIS中的C代码。

    更新的 :修改了措辞,因为这不再是一种理论技巧,而是我使用过的技巧。

        5
  •  0
  •   Cheyne    13 年前

    确保同时运行完整的包。包断点的调试程序在启动之前不会启动。

    调试脚本任务的工作方式类似。

        6
  •  0
  •   Dinesh Menon    13 年前

    尽管数据流任务中的脚本组件不允许任何形式的调试,但解决方法除外,如定期写入进度,消息框E.T.C

    脚本任务控制流项将允许开发人员调试SSIS代码

    这是最近发现的。:)