几个用户同时请求30,000行信息

时间:2013-01-23 10:19:28

标签: c# sql sql-server-2008

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

如果所有用户同时运行应用程序,则运行存储过程,并且所有三个都将具有结果集,当前使用大约30,000条记录的ADO.NET Datatable,然后应用程序需要将这些记录移动到Excel模板中对于他们每个人。

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

我将尝试使用DataTable

将数据从worksheet移至Excel-Interop

有没有人有将数据量从Datatable转移到Excel的经验?

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

通过xl interop循环遍历30000行×10列的表会遇到问题吗?

1 个答案:

答案 0 :(得分:1)

  

是否有任何从Datatable移动此数据量的经验   进入Excel?

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

  

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

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

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

  

将通过xl循环遍历30000行×10列的表   互操作遇到问题?

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