sql - ADO.net 源的 SSIS 变量 SQL 命令

标签 sql sql-server-2008 ssis

虽然这似乎是一个基本问题,但我已经绞尽脑汁好几天了,试图找到一个有效的解决方案。

我在服务器上有一个值查找表,我使用 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/

相关文章:

sql - 如何删除SQL Server中两个表中的数据?

sql-server - 查找 SQL Server 中表的 B 树高度

sql - 帮我解决这个 SQL 查询

sql-server - 我应该使用 SSIS 还是多线程 C# 应用程序将平面文件加载到数据库中?

mysql - 如何检查一个组在一列中是否有三个连续的值?

MySql - 获取值为 1 的列名称

sql-server - 获取当前工作日从周一到周日

sql-server - SSIS 平面文件目标向列添加尾随空格

sql-server - 如何将可执行的sql任务结果存储在excel文件ssis中

sql - 如何在 Oracle 中将日期转换为日期时间?