Debugging 当SSIS包在服务器上运行时,您能否在BIDS中监控其执行情况?
虽然我的标题说明了我目前的目标,但我对其他解决方案持开放态度。简言之,我有一系列SSIS包,计划在SQL Server机器上每晚运行 由于各种各样的更新发生在我的公司IT中,有时这些出口会被制动,并且在工作的中间会停止工作。为了解决这个问题,我在我的工作站上启动了BIDS,并在进程失败时重新启动。这很有用,因为根据我的经验,从BIDS中生成的任何错误都比从SQL Server/包执行历史记录或服务器事件日志中发现的任何错误有用得多 从历史上看,我的问题一直是,并非所有问题都会发生在投标中,但它们会在服务器上始终如一地发生。这些问题诊断起来很痛苦,花费了我很多时间 因此,我要做的是将包发布到SSIS服务器,从BIDS启动服务器实例,并在项目运行时监视它。这可能吗 如果没有,我是否可以做些其他事情,以便在流程执行时监视内部步骤 我担心这一切都不可能,但我不得不问。这将使我的调试和故障排除过程变得更加轻松。可能的选项: 您需要使用SSIS中的Debugging 当SSIS包在服务器上运行时,您能否在BIDS中监控其执行情况?,debugging,sql-server-2005,ssis,bids,Debugging,Sql Server 2005,Ssis,Bids,虽然我的标题说明了我目前的目标,但我对其他解决方案持开放态度。简言之,我有一系列SSIS包,计划在SQL Server机器上每晚运行 由于各种各样的更新发生在我的公司IT中,有时这些出口会被制动,并且在工作的中间会停止工作。为了解决这个问题,我在我的工作站上启动了BIDS,并在进程失败时重新启动。这很有用,因为根据我的经验,从BIDS中生成的任何错误都比从SQL Server/包执行历史记录或服务器事件日志中发现的任何错误有用得多 从历史上看,我的问题一直是,并非所有问题都会发生在投标中,但它们
日志记录功能。它允许您配置要捕获消息的事件。我通常喜欢使用日志OnWarning
和OnError
来跟踪包中出现的所有警告和错误消息。您有各种提供程序来保存日志数据。我更喜欢使用SQL Server,以便查询日志信息
SSIS 2012中显示的日志记录选项:
要启用登录包,如果您在SSIS 2005-2008 R2中开发包,则需要单击包Business Intelligence Development Studio(BIDS)
;如果您在SSIS 2012中开发包,则需要单击包SQL Server Data Tools(SSDT)
select id, event, source, message from dbo.sysssislog;
单击SSIS
菜单,然后单击日志记录…
您将看到配置SSIS日志对话框
在左侧,您可以检查包或单个任务以记录事件数据
在“提供程序和日志”选项卡上,可以选择一个适当的提供程序,以便将日志信息保存到该提供程序。下面的屏幕截图显示,使用连接管理器OLEDB_PracticeDB在SQL Server数据库中捕获事件信息
在“详细信息”选项卡上,可以选择要捕获的事件。下面的屏幕截图显示我正在捕获以下事件
- 一个错误
- 信息
- OnTaskFailed
- 警告
OnTaskFailed
活动
样品包说明:
假设我们有一个名为SO_15004109.dtsx
的包,其中包含一个数据流任务和脚本任务。数据流任务只是一个没有组件的虚拟任务
脚本任务的Main方法中有以下代码,用于激发自定义信息、警告和错误消息,以便我们可以观察它在日志数据源中的捕获方式。该代码是为SSIS 2012编写的,因此您可能需要为SSIS 2005修改它。我选择了VB.NET
而不是C#
,因为您已经在下面标记了这个问题,而且SSIS 2005只支持VB.NET
在VB.NET中为SSIS 2005及更高版本编写任务代码脚本。
在数据库中执行以下查询以查看此示例包捕获的事件。您将两次注意到一些消息,因为每个容器和任务都记录了事件。该表名为dbo.sysssislog
,因为该包是在SSIS 2012中创建的
select id, event, source, message from dbo.sysssislog;
个人日志记录经验:
我已经相当成功地查看了日志错误消息,以了解出了什么问题。在我看来,在生产环境中调试软件包是不可取的。但是,最好捕获日志事件
当我在SSIS 2005和2008工作时,我创建了基于SSRS的报告,该报告查询日志表以生成作业执行的每日报告,并向相关人员发送PDF附件
SSIS 2012中的情况有所改善,该工具具有内置的报告功能,可创建名为
SSIDB
的数据库。在我当前的gig中,我们已经开始使用务实工作公司的产品,名为,它包括将日志代码注入现有SSIS包并在执行包时监视运行包的工具。这不便宜,但我们发现它很有用。(特别是因为这意味着我们不必滚动我们自己的监控代码…+1@Siva你给了我一个类似的答案(和往常一样有更多细节),因为你更快地输入了,我放弃了我的。请注意我在上面编辑的日志记录表名称的更改。我还将OnTaskFailed错误添加到我的默认日志首选项中。这可能很有效。我要更改这些设置并重新发布我的包。明天晚上,我会查看日志,看看我发现了什么+1和答案,如果这能满足我的需要。这很有效。看起来这不是超时问题,而是SQL Server内存不足的问题:(很高兴在事件日志中看到这一点。但是,你的技术记录了这个问题,真是太棒了!
select id, event, source, message from dbo.sysssislog;