繁体   English   中英

具有存储过程的SSIS 2008。 交易最佳做法

[英]SSIS 2008 with Stored Procedures. Transaction best practices

我目前正在使用SSIS进行某些流程,脚本和直接数据导入。 大多数数据清理和转换都发生在我从SSIS执行SQL任务调用的存储过程中。 对于大多数存储,如果由于某种原因它失败了,我真的不在乎回滚任何事务。 我的SSIS错误处理实质上清除了所有登台数据,然后将错误记录到表中。 (此时,人员需要解决潜在的数据问题)

我的问题围绕“开始”,“结束”进行。 在任何情况下,存储的proc都会失败,然后不让调用SSIS进程知道吗? 我正在寻找硬件故障,锁定超时等。

我宁愿避免尽可能多地使用事务,而要依靠我的SSIS错误处理。

有什么想法吗?

我可以想到的一种情况(交易也无济于事)是存储的过程没有更新或插入任何记录。 那不是一个失败,但是可能需要一个SSIS包。 您可能要返回受影响的行数,然后再检查。

我们也对某些导入执行此操作,其中与上次导入明显不同的数字表示数据问题。 因此,如果我们通常从导入B的客户A中获得100,000条记录,而获得5000条记录,则SSIS包将失败,直到人们可以查看它并看到该文件是错误的,或者他们确实是在减少他们的工作量或减少了客户清单。

顺便说一下,我们暂存到两个表(一个表具有未更改的原始数据,另一个用于清理。如果您想轻松查看数据问题是什么,SSIS程序包的故障不应回退这些表。然后您可以判断数据是否从一开始就是错误的,或者如果它在清理过程中由于某种原因丢失或修复不正确,有时记录错误的地方不是实际发生错误的地方,很高兴看到数据看起来像是未改变的更改过程,有时您有错误的数据,是的(大多数时候都可以),但有时又有错误,同时拥有这两个表使您可以巧妙地查看这两个表中的哪一个。

作为最后一步,您可以将所有proc插入到日志记录表中,如果担心丢失的某些执行未恢复到包中,则请确保在执行下一步之前记录已存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM