0

我需要帮助。我一直在我应该去的方向上来回走动,并且有一些我不喜欢或不能使用的选项。

我编写了一个通用的数据转储工具,它从指定的服务器中提取数据并将其转储到逗号分隔的文件中。它的配置和要运行的查询来自专门为此工具创建的 SQL 表。但是,我有一个新要求,即有一些数据转储需要从不同的服务器中提取数据并合并在一起,但我不想为这种“自定义”类型的 pull/dump 更改工具。我试图保持它的通用性,所以我不会经常对其进行编码。我的想法是创建一个库,我的报告工具可以在其中使用这些自定义类型的拉取,并且此库返回的数据是一个 SqlDataReader 对象。但是,由于该库必须从不同的服务器中提取并合并数据,因此该库是否可能创建它的 SqlDataReader?

我不想返回一个数组,因为这不是工具现在循环数据的方式,主要是因为我现有的一些数据转储是数百万行,所以我现有的循环是一个 datareader 循环来保持内存下降。但是,库可以创建一个二维数组,只要它可以在返回之前转换为 SqlDataReader 对象。这样我就不必对应用程序中的循环进行太多更改。

希望一切都说得通。我脑子里一直在蹦蹦跳跳,所以我最终写了 10 次。

编辑:请记住,每条记录将分散在 3 个服务器上,并且必须合并。这是三个不同的进程,它们一起工作,但有自己的服务器。例如,来自服务器 1 的 ID 将与 Server2 上的 Server1ID 相关。

4

2 回答 2

1

所有 ADO.NET 数据访问类都实现了通用接口,因此您可以返回一个IDataReader而不是SqlDataReader.

于 2013-03-12T16:06:05.853 回答
0

我想出了一个解决方案。我将编写对象,它将根据要生成的“自定义”报告动态生成。该对象将从第一台服务器中提取数据并将其插入本地表/SQL Server。然后它将转到下一个服务器,根据提取的第一个数据提取数据并在同一服务器内更新它。最后是最后一个服务器来提取最终数据,这些数据也需要合并到我的本地表中。正确合并所有内容后,我将选择 * 作为原始调用方 Data/Dump exe 所需的 DataReader。似乎是在不修改每个自定义数据拉取的原始 exe 的情况下完成这项工作的唯一真正方法。

感谢大家的意见。

于 2013-03-12T17:00:13.513 回答