Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用VB.NET比较来自不同数据库的两个数据集_Sql Server_Vb.net_Linq_Dataset - Fatal编程技术网

Sql server 使用VB.NET比较来自不同数据库的两个数据集

Sql server 使用VB.NET比较来自不同数据库的两个数据集,sql-server,vb.net,linq,dataset,Sql Server,Vb.net,Linq,Dataset,对于数据保证,我的任务是比较来自不同数据库的两个数据集。目前,我正在执行逐单元值比较,这是一种蛮力方法,需要花费大量时间 我想知道是否有任何方法可以节省我的时间和内存空间,能够提供一个结果指示“表是相同的”或“表不相同的” 感谢您的帮助。如果它们来自不同的来源,除了逐个单元格进行比较之外,没有其他方法。然而,我可以给你建议一些可能会使比较速度提高很多倍的东西。如果您的数据表具有相同的结构(由于您已经逐单元格比较了它们,所以希望它们具有相同的结构),请尝试比较每对行的ItemArray,而不是通过

对于数据保证,我的任务是比较来自不同数据库的两个数据集。目前,我正在执行逐单元值比较,这是一种蛮力方法,需要花费大量时间

我想知道是否有任何方法可以节省我的时间和内存空间,能够提供一个结果指示“表是相同的”或“表不相同的


感谢您的帮助。

如果它们来自不同的来源,除了逐个单元格进行比较之外,没有其他方法。然而,我可以给你建议一些可能会使比较速度提高很多倍的东西。如果您的数据表具有相同的结构(由于您已经逐单元格比较了它们,所以希望它们具有相同的结构),请尝试比较每对行的
ItemArray
,而不是通过列索引或列名(或行属性,如果您使用的是强类型数据集)访问它们。这将有望给你带来更好的结果

如果您使用的是.NET 3.5或更高版本,这一行应该可以:

Enumerable.SequenceEqual(row1.ItemArray, row2.ItemArray);

为每个表创建一个校验和并比较它们的值如何

比如:

SELECT CHECKSUM_AGG(CHECKSUM(*)) FROM TableX

这可能需要更精确的排序。

我的印象是,他需要比较数据集,而不是SQL Server表,从标记中可以看出。是的,这可能是真的。但是,如果任务是比较两个表的内容(据我所知),那么如果可以加载两个校验和并在代码中比较它们,为什么要从服务器加载整个数据呢?正确。让我们看看他是否提供了更多的解释。这种方法的一个问题是,它可能会返回错误的等式。两个相等校验和不能确保表的内容相等。另一方面,它不会返回虚假的不平等。@JesúsLópez你怎么说它们在内容上不平等?谢谢你的想法。我将尝试一下并检查性能上的差异。