0

关于执行 SQL 任务生成的结果集,我有两个问题 -

1) 存储结果集的对象的类是什么?它是 ADODB 记录集吗?2)无论它是什么对象,如何迭代该对象。我想简单地迭代它并以网格形式打印它,就像它出现在 SQL Server Management Studio 中一样。我想这样做而不将其放入 DataTable 对象或类似的东西中。那会浪费内存和时间。

有人可以告诉我怎么做吗?

4

2 回答 2

2

1) 结果集在技术上存储在一个OLEDB Rowset 对象中,可以将其放入一个ADORecordConstruction 对象中并转换为一个ADO RecordSet。每当您实际访问对象的数据时,SSIS 都会隐式执行此操作。

如果没有脚本,在 SSIS 执行中查看此数据的唯一方法是使用 Foreach 循环容器。

  1. 将 Foreach 循环枚举器设置为 Foreach ADO 枚举器。
  2. 为结果集中的每一列分配一个变量。
  3. 在循环中使用这些变量以使用事件处理程序在执行日志中显示它们。

话虽如此,如果您真的想查看对象的数据,我强烈建议您创建一个数据流,将对象转换为脚本源,然后将数据查看器附加到它以查看网格形式的数据。

最后,我建议如果您只是尝试调试和查看 SQL 任务返回的数据集,脚本任务可以执行查询并将其结果非常快速地推送到(例如)本地文件中。

于 2013-11-13T15:57:07.743 回答
0

另一种方法是使用 ADO.NET 连接而不是 OLEDB。如果您使用 ADO.NET 连接,您将获得 ADO.NET DataSet 对象。DataSet 是 DataTable 的集合。

DataSet 教程的一些链接 -

http://www.dotnetperls.com/dataset

斯科特米切尔的 tu -

http://msdn.microsoft.com/en-us/library/aa581776.aspx

于 2013-12-18T18:07:06.740 回答