c# - 多个用户同时请求 30,000 行信息

标签 c# sql sql-server-2008

我有一个可供 3 个用户使用的测试平台应用程序。

如果所有用户同时运行该应用程序,则会运行一个存储过程,并且这三个过程都会有结果集,目前使用 ADO.NET 数据表,该应用程序随后需要大约 30,000 条记录为他们每个人移动到一个 Excel 模板。

模板是一个xlsm 文件,其中包含一些VBA,需要在导入数据后运行。此模板保存在解决方案中。

我将尝试使用 Excel-Interop 将数据从 DataTable 移动到 worksheet

有没有人有将如此大量的数据从 Datatable 移动到 Excel 的经验?

@slugster 建议“从 Excel 设置数据源并使用脏读运行查询”...是否可以在链接到非物化数据表的 Excel 中设置数据源?

通过 xl interop 遍历一个 30000 行 x 10 列的表格是否会遇到问题?

最佳答案

Has anyone any experience of moving this amount of data from Datatable into Excel?

不是来自 DataTable 对象,而是使用 Excel 内置数据导入功能的数据量,是的。

@slugster suggested "setting up a datasource from Excel and just run the query using a dirty read" ... is it possible to set up a datasource in Excel linked to a non-materialized datatable?

我也建议这样做。为了更进一步,我建议创建一个存储过程然后调用它。使用存储过程您应该会看到更好的性能。该过程可以收集和准备数据,然后将其返回到 Excel。此外,您可以在过程中构建缓存机制。例如,如果您的数据每天只更改一次,那么您每天只重建源表中的数据一次,因此只有第一个请求数据的用户会受到初始性能影响。此外,根据您在 VBA 中的 Excel 中进行的后处理类型,也许也可以在过程中处理。如果您将 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 添加到该过程的顶部,或者在您愿意允许脏读的表上使用 (NOLOCK) 提示,该过程也将有助于减少锁定问题的可能性。

这是一篇关于在 Excel 中使用存储过程的好文章:http://codebyjoshua.blogspot.com/2012/01/get-data-from-sql-server-stored.html

Will looping through a table that is 30000 rows by 10 columns via xl interop run into problems?

这取决于您对“问题”的定义。我可以看到可能的性能影响,但是如果您在存储过程中尽可能多地处理,您应该没问题。在数据世界中,这真的很小。

关于c# - 多个用户同时请求 30,000 行信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477263/

相关文章:

php - 像 Facebook 一样按用户名对所有消息进行分组

sql - 如何复制SQL Server对称 key ?

c# - 当标签不为空时隐藏按钮

c# - 执行Mysql查询时命令执行过程中遇到 fatal error

mysql - SQL 是否可以从 "list"进行选择?里面的例子

sql-server - 从 SQL Server Express R2 在 Eclipse 中进行 hibernate 逆向工程

c# - 将 datetime2 数据类型转换为 smalldatetime 数据类型导致值超出范围。\r\n语句已终止

c# - 在 C# 中将 UNC 路径转换为本地路径

c# - 如何在asp.net c#中验证文本框只输入几个选项​​?

mysql - 复制所选数据并增加条目 ID