【发布时间】:2012-10-22 22:38:36
【问题描述】:
虽然这似乎是一个基本问题,但我几天来一直在努力寻找有效的解决方案。
我在服务器上有一个值查找表,我使用 C# 脚本任务读取并组装成一个字符串。我将此字符串写入一个变量,我想在我的数据流中的 ADO.NET 数据源(来自我只有读取权限的不同服务器)上的大型 SQL 查询中将其作为 WHERE 参数传递。例如,这个字符串就像
('Frank', 'John', 'Markus', 'Tom')
我会将其附加为我的 WHERE 子句。 我无法直接从 ADO.NET 数据源的变量中读取数据,也无法使用“表达式”属性来设置我的 SQL,因为我的 SQL 查询超过 4000 个字符。我可以使用执行 SQL 任务来运行我的查询,将结果加载到记录集中并假设,然后循环遍历记录集,但这非常低效。
最好的方法是什么?我的最终目标是将这些结果放在第一台服务器上的表中。
【问题讨论】:
-
将参数值插入表中,然后编写查询以从该表中提取参数值。
-
我从具有管理员访问权限的服务器上的表中组合参数。问题是我需要使用这些参数在另一台服务器(我只有读取权限)上执行查询。还是您建议我在数据流中创建脚本任务?
-
不,你想的就是我的意思。
-
我希望我没有误读,但是我如何将该脚本任务的结果传递给我的 ADO.net 数据源查询呢?
-
您能否要求该服务器的管理员使用此长查询准备视图,这会将您的查询缩短为
select * from viewName where col in ('Frank', 'John', 'Markus', 'Tom')?
标签: sql sql-server-2008 ssis