2013-01-04 71 views
5

我是SSIS的新手。我创建了一个包含少量序列容器和少量任务的包。该软件包将计划自动运行,因此我想捕获运行时错误和状态,如插入/更新/删除到SQL数据库中我自己的日志表中的行数。SSIS登录到SQL Server

我正在考虑使用SSIS Logging to SQL Server功能将条目记录到默认表中,然后创建一个SQL Task将其插入到我自己的日志表中。这是做这件事的好方法吗?或者你建议其他更好的方法?

另外我无法让SSIS日志记录正常工作。我发现了一个在线博客 How to create an error log or custom error log within an SSIS Package?,它描述了使用SSIS日志记录将条目记录到SQL Server的过程。但是,与博客中的解释不同,

我看不到在我的SQL Server数据库中创建的dbo.sysssislogdbo.sp_ssis_addlogentry表。我必须做错什么?以下是我遵循的步骤 -

1. Went to SSIS Logging 
2. Selected Provider Type as SQL Server 
3. Added the OLEDB connection for Configuration 
4. Went to the Detail tabs on each sequence container and chose appropriate events 
5. Clicked "Save..." 
6. Provided the location and name for the XML file 
7. Saved the package and ran it. 

仍然无法在数据库中看到那些ssis表或过程。我正在使用SQL 2008R2。

任何意见和建议非常感谢。

在此先感谢。

+0

的存储过程和模板日志表将被复制到你的目录在msdb数据库中当前存在 – billinkc

回答

9

看看#3在您的清单中。记下该数据库的位置。

在SSMS中导航到该数据库。展开数据库(单击左侧的加号)。

对于表的位置:

展开文件夹。展开系统表文件夹。桌子应该在那里可见。它的名字是dbo.sysssislog

有关步骤的位置:

展开可编程文件夹。展开系统存储过程文件夹。存储过程应该是可见的。它的名字是dbo.sp_ssis_addlogentry

+0

我现在可以在msdb数据库中看到该表,但是在执行包时却无法获取任何信息,甚至更改了“配置”包括OLE D B连接到“SSIS日志记录”屏幕的“提供程序和日志”选项卡中的msdb数据库。我还拥有为顶级容器选择的所有事件,这些事件流向我所有的序列容器和任务。我不擅长做什么。谢谢。 – edyleddie

+0

MSDB数据库中的副本只是模板。你应该在另一个数据库中使用它们。在改变它之前,你的#3分贝是什么?那就是你的物体会在哪里。请记住,在2008年和2008年R2,他们将是系统对象。不确定2012年。 –

2

Re。用户数据库中sysssislog sys表的可见性(位于系统表文件夹内)。 我已经通过“将事件的日志条目写入SQL Server数据库”设置了SSIS包(2008 R2)的日志记录,并指定了用户数据库。之后,我运行了SSIS包。我在系统表文件夹中找到了sysssislog(并且它包含了预期的数据)。之后,我决定测试一下这张表是“每次运行SSIS包时创建的”。我删除了这张表。 我已经运行SSIS包再次。表sysssislog真的创建了(在用户表中),并包含正确的数据,OK。

但是自从在SSMS的系统表中看不到它。换句话说,该表存在(例如存在于sysobjects,systable等中),但未在SSMS对象资源管理器的列表中显示。我知道这不是SSIS错误(SSIS真的会在每次运行时重新创建此表),但它是SSMS错误(它以某种方式丢失了此表的元数据)。

我丢弃了这个表几次并再次运行SSIS包,它真的被重新创建并且重新填充每次运行的最后一个SSIS包的数据。

但是我从来没有能够在对象浏览器中看到它(当然,我已经在任何级别刷新了它,关闭/重新打开SSMS--这张表出于任何原因从未出现过)。 我能够在MSDB数据库中看到这个系统表(但它是空的)。

我重复创建了不同数据库的日志记录(为不同的数据库创建新连接)。 SSIS运行时,sysssislog表被创建,并且可以在系统表中SEEN(但是,如果我再次删除此表,它将不会在再次在对象浏览器中重新创建时看到)。

只是想分享,有趣的bug。这从未经过MS QA的测试(在第二个和后续的此表创建实例中,通知SSIS中SSIS中的表创建)。

阿列克谢

1

即使你已经启用了SSIS日志记录和如果你试图执行一个任务(不执行实际的软件包),那么sysssislog表将不会无论是在MSDB或中提到的连接管理器创建。

1

对于日志记录,我通常通过变量获取我想要的信息,然后在过程结束时,我执行一个存储过程,将记录插入到“ProjectLog”表中。不知道它是否理想,但它适用于我们。

原因: *错误消息可以自定义,因此可能更容易阅读和排除故障。 *我们通过自定义,易于理解的错误信息(例如,“过程未执行,文件x缺少x列/字段所需数据”)的“OnError”任务。 *可添加对您的组有价值的数据以履行业务需求。

*请注意,这是一个额外的步骤,我们做的,除了与覆盖每一天的错误记录的文本文件。