Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 当SSIS包在服务器上运行时,您能否在BIDS中监控其执行情况?_Debugging_Sql Server 2005_Ssis_Bids - Fatal编程技术网

Debugging 当SSIS包在服务器上运行时,您能否在BIDS中监控其执行情况?

Debugging 当SSIS包在服务器上运行时,您能否在BIDS中监控其执行情况?,debugging,sql-server-2005,ssis,bids,Debugging,Sql Server 2005,Ssis,Bids,虽然我的标题说明了我目前的目标,但我对其他解决方案持开放态度。简言之,我有一系列SSIS包,计划在SQL Server机器上每晚运行 由于各种各样的更新发生在我的公司IT中,有时这些出口会被制动,并且在工作的中间会停止工作。为了解决这个问题,我在我的工作站上启动了BIDS,并在进程失败时重新启动。这很有用,因为根据我的经验,从BIDS中生成的任何错误都比从SQL Server/包执行历史记录或服务器事件日志中发现的任何错误有用得多 从历史上看,我的问题一直是,并非所有问题都会发生在投标中,但它们

虽然我的标题说明了我目前的目标,但我对其他解决方案持开放态度。简言之,我有一系列SSIS包,计划在SQL Server机器上每晚运行

由于各种各样的更新发生在我的公司IT中,有时这些出口会被制动,并且在工作的中间会停止工作。为了解决这个问题,我在我的工作站上启动了BIDS,并在进程失败时重新启动。这很有用,因为根据我的经验,从BIDS中生成的任何错误都比从SQL Server/包执行历史记录或服务器事件日志中发现的任何错误有用得多

从历史上看,我的问题一直是,并非所有问题都会发生在投标中,但它们会在服务器上始终如一地发生。这些问题诊断起来很痛苦,花费了我很多时间

因此,我要做的是将包发布到SSIS服务器,从BIDS启动服务器实例,并在项目运行时监视它。这可能吗

如果没有,我是否可以做些其他事情,以便在流程执行时监视内部步骤

我担心这一切都不可能,但我不得不问。这将使我的调试和故障排除过程变得更加轻松。

可能的选项: 您需要使用SSIS中的
日志记录功能。它允许您配置要捕获消息的事件。我通常喜欢使用日志
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;