Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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
C# 大型数据集.net和SQL server?_C#_Sql Server_Dataset_Asp.net 3.5 - Fatal编程技术网

C# 大型数据集.net和SQL server?

C# 大型数据集.net和SQL server?,c#,sql-server,dataset,asp.net-3.5,C#,Sql Server,Dataset,Asp.net 3.5,我有一个项目,我需要拉在很多记录,并修改他们的一些标准的基础上 基本上,我们有一个用户可以上传文档的系统。出于其他用户的验证原因,这些文档在数据库中被标记。我们根据某些标准验证文件,然后将其标记为有效。所以我们有两列是有效的和经过验证的 我不能依靠数据库来验证文件,所以我有一个应用程序来验证它们。可能需要验证数十万个文件。应用程序迭代数据库的最佳方法是什么?我的一个想法是,编写一个SP来提取未将validated标志设置为true的前X个记录量。然后运行另一个查询,查看是否还有记录。如果是这样,

我有一个项目,我需要拉在很多记录,并修改他们的一些标准的基础上

基本上,我们有一个用户可以上传文档的系统。出于其他用户的验证原因,这些文档在数据库中被标记。我们根据某些标准验证文件,然后将其标记为有效。所以我们有两列是有效的和经过验证的


我不能依靠数据库来验证文件,所以我有一个应用程序来验证它们。可能需要验证数十万个文件。应用程序迭代数据库的最佳方法是什么?我的一个想法是,编写一个SP来提取未将validated标志设置为true的前X个记录量。然后运行另一个查询,查看是否还有记录。如果是这样,请再次运行该SP,提取记录并进行处理。我不确定应用程序将如何处理如此多的记录。

我将从查看数据库中的BulkRead和BulkWrite开始。我个人没有理由使用它们,但我相信它们将非常接近您所需要的:一种非常快速的从数据库中提取数据的方法,然后一种非常快速的向数据库回写的方法。

我将从查看数据库的BulkRead和BulkWrite开始。我个人没有理由使用它们,但我相信它们将非常接近您所需要的:一种非常快速的从数据库中提取数据的方法,然后一种非常快速的回写数据库的方法。

您是否尝试过在SQL Server中使用FILESTREAM列?如果没有,请简要说明

从本质上讲,通过这种方式,您的文档可以物理存储在文件系统中,但SQL Server仍然将其视为数据库的一个组成部分,这意味着您不必更新具有大BLOB列的记录,并且/或者您可以使用直接的文件系统调用来管理文档本身


只是想一想。

您尝试过在SQL Server中使用FILESTREAM列吗?如果没有,请简要说明

从本质上讲,通过这种方式,您的文档可以物理存储在文件系统中,但SQL Server仍然将其视为数据库的一个组成部分,这意味着您不必更新具有大BLOB列的记录,并且/或者您可以使用直接的文件系统调用来管理文档本身


只是一个想法。

你的方法很好。我也用过类似的方法,比如群发邮件(阅读TOP1000,直到记录用完为止)。好的是,你永远不必拉超过X条记录,这使你的循环很快


如果它不起作用,您可以添加ServiceBroker并将其放入一个队列中,在该队列中添加流程侦听的验证顺序。后一种方法允许您实际上也可以轻松地拥有多个执行验证的读卡器。不过,这只有在验证是一个瓶颈的情况下才有意义(因为它需要时间——你永远不会说验证到底做了什么)。

你的方法非常合理。我也用过类似的方法,比如群发邮件(阅读TOP1000,直到记录用完为止)。好的是,你永远不必拉超过X条记录,这使你的循环很快


如果它不起作用,您可以添加ServiceBroker并将其放入一个队列中,在该队列中添加流程侦听的验证顺序。后一种方法允许您实际上也可以轻松地拥有多个执行验证的读卡器。不过,这只有在验证成为瓶颈的情况下才有意义(因为这需要时间——你永远不会说验证到底做了什么)。

请以后使用段落——越容易阅读,越容易帮助你。我通常会这样做,因为某些原因,他们没有在帖子中得到翻译。请以后使用段落——越容易阅读,帮助你就越容易。我通常会这样做,因为某些原因,他们没有在帖子中得到翻译。这完全不是用户需要的。完全不是用户需要的。这样的处理基本上是一个队列。如果需要高性能/吞吐量,那么在设计表时必须考虑排队:问题是,如果不进行更新,就无法轻松地放入多个读卡器。因此,对于一些处理要求不高的项目来说,这是很好的,但是运行300个进程来提取最新的项目比只选择一个顶级项目要复杂一些。像这样的处理基本上是一个队列。如果需要高性能/吞吐量,那么在设计表时必须考虑排队:问题是,如果不进行更新,就无法轻松地放入多个读卡器。因此,对于处理要求不高的东西来说,这是很好的,但是运行300个进程来提取最新的项目比只选择一个顶级项目要复杂一些。