我的主应用程序具有夜间SSIS作业,可将一些(不是全部)数据从生产服务器移动到各种测试和开发服务器。
这些工作没什么特别的。他们删除目标表并从源重新填充它。混合中有许多表和4或5个服务器,有很多外键,但一切都是SQL到SQL,没有合并或查找。
使用SSIS来做到这一点已被证明是非常脆弱的。当新的应用程序版本更改架构时,超过一半的时间,作业开始失败。为什么?更新由开发人员完成,并且不同的开发人员已经对包进行了数十次调整和更改,并且通常在开发周期的关键时刻发生SSIS更改。
我发现SSIS可能是也可能不是正确的工具。对于简单的表副本,SSIS非常臃肿。 (列映射等)有更好的方法吗?理想情况下,它只是作为输入(最好来自中央来源):
然后简单地说: - 在指定的服务器上按计划开始执行。 - 引用对列表进行排序(不违反FK约束) - 以引用顺序删除/截断所有目标表 - 以引用顺序将表从源复制到目标 - 报告成功或失败。
列表中唯一具有挑战性的事情(我认为)将是一种很好的低维护方式来安排工作和工作报告成功或失败。
[注意:我不是在寻找技术细节。我只是在寻找一种较低维护,不那么脆弱的方法来实现这些数据移动。我将下面的初步想法作为一种可能的解决方案发布,但如果有更简单的解决方案,我会非常高兴。]
答案 0 :(得分:0)
您可以删除表,并使用“传输SQL Server对象任务”复制表,而不是截断表和复制数据,这将包括DDL更改。
请注意,您必须相应地处理外键。