【问题标题】:Debugging in SSISSSIS 中的调试
【发布时间】:2010-10-13 18:55:05
【问题描述】:

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

另外,我不知道如何将 SSIS 包变量添加到调试监视窗口?

目前我想到的一件事是使用 msgbox。但这并不能替代使用开发环境进行的全面调试。任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: .net sql-server debugging ssis


    【解决方案1】:

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

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

    顺便说一句,John Sansom 似乎没有阅读这部分问题: 如何调试在 SSIS 包中在脚本任务中编写的 .NET 代码? 它是一个脚本任务,不是正常的 SSIS 调试。

    希望这会有所帮助。

    【讨论】:

    • 将 Debug 属性 Run64BitRuntime 更改为 false 就是答案。好东西。 +1
    • 解决了一天的问题后,我从 bids 2013 升级到了 bids 2015。我认为升级必须将属性重置为 64 位。
    【解决方案2】:

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

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

    如果您已经开发了自己的自定义组件,即从 Visual Studio 中开发,那么您应该能够在 Visual Studio 环境中调试该组件的特定功能,然后才能在 BIDS 中使用该组件。

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

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      确保您还运行完整的软件包。包断点的调试器在您启动之前不会启动。

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

      【讨论】:

        【解决方案5】:

        虽然数据流任务中的脚本组件不允许任何形式的调试,除了定期写入进度、消息框等变通方法之外

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

        最近发现了这个。 :)

        【讨论】:

          【解决方案6】:

          您可以通过在源代码的适当位置嵌入对Debugger.Break 的调用,将调试器附加到(几乎)任何您正在为其编写 .NET 代码的进程。

          引用 MSDN:

          如果没有附加调试器,系统会询问用户是否要附加调试器。如果是,则启动调试器。如果附加了调试器,调试器会收到用户断点事件的信号,并且调试器会暂停进程的执行,就像遇到了调试器断点一样。

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

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

          【讨论】:

          • 添加这一行对 SSIS 脚本任务没有影响
          • 相关调用 'Debugger.Break' 确实有效 - 但有时您会在 IL 级别而不是 C# 级别进行调试。
          猜你喜欢
          • 2011-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          • 1970-01-01
          相关资源
          最近更新 更多