虽然这似乎是一个基本问题,但我已经绞尽脑汁好几天了,试图找到一个有效的解决方案。
我在服务器上有一个值查找表,我使用 C# 脚本任务从该表中读取值并将其组装成字符串。我将此字符串写入一个变量,我希望将其作为数据流中 ADO.NET 数据源(来 self 只能读取访问的不同服务器)上的大型 SQL 查询中的 WHERE 参数传递。例如,这个字符串就像
('Frank', 'John', 'Markus', 'Tom')
我会将其附加为我的 WHERE 子句。 我无法直接从 ADO.NET 数据源的变量中读取数据,也无法使用“表达式”属性来设置 SQL,因为我的 SQL 查询超过 4000 个字符。我可以使用执行 SQL 任务来运行查询,将结果加载到记录集中,然后循环访问记录集,但效率极低。
最好的方法是什么?我的最终目标是将这些结果放入第一台服务器上的表中。
最佳答案
您可以尝试将脚本组件设置为源 - 脚本内的变量和字符串可以超过 4000 个字符,以便您可以在其中容纳查询。
设置与本文类似的组件:http://beyondrelational.com/modules/2/blogs/106/posts/11119/script-componentsource-part1.aspx 在此示例中,您将了解如何使用 ExecuteReader 获取数据并将其放入脚本组件的输出:http://beyondrelational.com/modules/2/blogs/106/posts/11124/ssis-script-component-as-source-adonet.aspx在本教程中,您将了解如何正确获取连接:http://www.toadworld.com/platforms/sql-server/b/weblog/archive/2011/05/30/use-connections-properly-in-an-ssis-script-task
通过加入这些信息,您应该能够编写源脚本组件,该组件可以使用任何长度动态构造的查询来获取数据。
祝你好运:)
关于sql - ADO.net 源的 SSIS 变量 SQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13020960/