我目前正在使用Microsoft SSIS和SQL Server 2008,我想使用以下命令将日志写入文件:
我正在网上闲逛寻找解决问题的方法,我正在考虑为SSIS编写自己的日志提供程序。
有人知道该怎么做,或者是否只是浪费时间甚至尝试它?
感谢您的帮助
答案 0 :(得分:3)
就SSIS记录而言:
我们使用SSIS在数据库中提供的日志记录,该数据库包含由我们的SSIS专家设计的所有SSIS包的元数据。这使我们可以轻松地为记录的操作制定公司标准,并利用Microsoft为创建日志记录系统所做的工作。但是,日志数据相对难以阅读,因此我们的架构师在C#中编写了一个解析器,将数据拉入一个具有我们需要的结构的表中。所以,是的,我可以告诉你这是值得的时间。我可以轻松阅读任何导入处理的错误和步骤。我有一个运行失败的电子邮件任务,其中包括对该运行的表的查询,以便必须研究失败的支持人员可以简单地运行电子邮件中的代码来查找发生的事情。这大大减少了研究和修复错误的时间。
根据Nazim的评论添加更多信息: 这是一个相当复杂的数据库,但它包括导入/导出类型,文件名,要拾取的文件的位置,与之关联的客户端,频率,文件中的列以及类型等。它应该保存的数据(用于检查文件是否是正确的格式,因为已知客户端在没有警告的情况下更改它们)。我们使用大量此信息作为包本身的变量。然后,当运行包时,我们在详细信息表中记录该运行的详细信息,该详细信息表包括已解析的数据和instanceid(每次运行时每个包的第一个任务中都会填充,并与packageid相关联)。然后包中的最后一个任务记录结束时间和成功状态(或者如果错误输出,我们有一个任务结束具有失败状态的实例)。很难描述,因为我们在数据库中有超过20个表,具体设计是专有的。如果您想设计自己的数据,只需考虑可能作为变量有用的所有数据,可能对解决问题有用的所有数据,以及您可能希望运行的有关导入和导出过程的管理报告的所有数据
答案 1 :(得分:2)
正如James上面提到的,SSIS有一些非常好的内置日志记录功能:basic how to on msdn。在我的上一个客户端,他们希望像您一样记录特定信息,为此,我们使用包事件处理程序的soem中的脚本任务创建了自定义日志文件。一些更常用的事件处理程序是OnPreExecute,OnPostExecute和OnError。脚本任务允许您访问.NET库,这些库允许您创建日志文件并附加您认为必要的任何信息。存储在包变量中的许多好信息可以在脚本任务中使用,例如执行时间,用户名,开始时间等。
答案 2 :(得分:0)
我已经对此进行了一些研究,并且认为它可能更好地坚持使用内置的SSIS日志记录功能。
如果你想专门定制它,你看过可能记录到SQL表,然后可能以一种以你需要的格式输出日志的方式查询这个表吗?