Sky*_*Sky 5 sql-server ssis sql-server-2008-r2 sql-clr
在数据迁移过程中,我需要在写入目标表之前转换来自源系统的一些列值。
我已经获得了一个 Csharp 代码,它读取一个字符串并进行转换(这是一个复杂的字符串操作),然后返回转换后的字符串。
将此代码插入数据迁移 SQL 脚本的最佳方法是什么?我对 CSahrp 编程知之甚少,在研究了不同的站点后,发现这可以通过在 SSIS 包中添加脚本组件或将 .net 代码包装在可从 SQL Server 调用的 CLR 函数中来完成。
由于我的脚本不是 SSIS 包的一部分,我的偏好是定义一个 CLR 函数,但是可以吗?每个选项的优缺点是什么?
你还认为这个目标可以使用另一种更容易实现和维护的技术来实现吗?
如果你知道一个很好的链接,它会一步一步地向我展示这个过程,请与我分享:)
谢谢你。
鉴于您当前的迁移脚本只是一个脚本,这将是 CLR 程序集和使用 SSIS 之间的艰难调用。
CLR 组装:
SSIS 脚本组件:
虽然我还没有测试过,但我会大胆地说这两种方法的性能应该相似。如果性能是一个大问题,请同时设置场景和比较测试。事实上,您可能只想为了练习而设置两者,这样您就可以看到自己的一些差异和相似之处,这比阅读它更有趣和有趣(好吧,至少我是这么认为的)。
第三种选择是将流程完全转移到 SSIS,这更适合迁移/ETL 类型的任务。这可能可行,也可能不可行。您不一定需要重新调整整个过程,因为您当然可以执行任意脚本。
最后,另一种选择是将代码转换为 T-SQL。然而,根据复杂性,这可能是一个相当大的挑战。当然,有些操作任务更适合使用合适的编程语言/框架,如 .NET。如果没有看到代码本身,就不可能说它是否值得尝试。正如我之前提到的,在这种情况下,您肯定需要开发一个全面的测试套件。
就我个人而言,我可能会创建一个 CLR 程序集,因为我在编程方面很擅长,这将是集成代码最快、侵入性最小的方式。但那是我,我还没有看到代码,所以它可能不是您和您的环境的最佳解决方案。