SSIS - 登录SYSSSISLOG以外的表

时间:2010-09-07 14:07:48

标签: sql-server ssis

SSIS似乎坚持要记录到系统表SYSSSISLOG。有没有办法让它使用不同的表?

我希望每个包都能登录到另一个表。

4 个答案:

答案 0 :(得分:5)

快速回答与John Sansom的回答相同:使用日志记录时,它会创建一个表和一个存储过程(名称因版本在2005年和2008年之间而异)存储过程可以修改为执行任何操作。如果存储的proc被删除,Sql server会重新创建它,但是如果存储的proc存在,那么Sql server假定它没有问题并且不管它。这允许您修改存储的proc以写入您想要的任何表/表。

答案 1 :(得分:2)

好吧,您可以使用以下内容查询这个巨大的日志表:

--first, we identify the packages
;with DetectedPackages as (
select source, s.executionid
from dbo.sysssislog as s
where event = 'PackageStart'
group by source, s.executionid
)
--then we use those executionids to display results
select * from dbo.sysssislog as s
join DetectedPackages dp on s.executionid = dp.executionid
where dp.source = 'PackageName'

如果你想在视图中封装每个包,现在你知道如何做到这一点。

答案 2 :(得分:1)

在SQL Server Central上查看以下文章,您可能需要注册,但可以免费注册,您会发现该站点是优秀的SQL Server资源。

本文详细介绍了如何实现将SSIS日志输出重定向到另一个表的自定义日志提供程序。使用此实现作为框架,您可以扩展它以满足您的要求。

SSIS Custom Logging the Easy Way

答案 3 :(得分:0)

以上内容非常正确,但是写得不好。在SSIS中指定日志记录时,可以登录到SQL Server的特定数据提供程序IE SSIS日志提供程序。当您将其指向特定数据库时,它将在数据库的System Tables文件夹下创建一个[dbo].[sysssislog]表。如果在SSMS中导航到数据库和可编程性->存储过程,将有一个名为[dbo].[sp_ssis_addlogentry]的过程,它将插入SSIS中的日志条目。您可以重新指向此存储过程以指向要登录的表,而不是数据库中SSIS生成的表。