在WCF的Oledb有一些大的Excel文件的问题?

这是故事:

我想要导入一个Excel表格到数据库中。 我在客户端做了一些准备工作,例如select文件,正确的工作表和工作表的configuration。

完成之后,我将文件发送到本地wcf服务器。
然后wcf将文件写入临时文件夹(C:\ Windows \ Temp)。
我创build一个oledb连接并在表单上执行一个count(*)命令,那就是出错的地方。

代码:

_connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\""); OleDbCommand command = new OleDbCommand("SELECT COUNT(*) FROM [" + .SheetName + "]", _connection); if (_connection.State == ConnectionState.Closed) _connection.Open(); TotalRows = (int)command.ExecuteScalar(); 

是的,我没有在这里使用,请不要介意
(int)command.ExecuteScalar(); 执行它出错了。
我收到错误: System resource exceeded. 。 这是一个OleDBException。

我的电脑的内存没有被填满,它看起来甚至没有尝试读取文件。 它立即崩溃。

有关我尝试阅读的文件的一些信息:

  • 它有154k行
  • 它有114列
  • 大小是90MB

如果我采取这个50k行的子集,它不会崩溃。
虽然说TotalRows是2536。
起初我虽然该文件是腐败的,但多数民众赞成在情况并非如此,因为这完全相同的代码在客户端上使用完全相同的文件。

如果我采取2500行的子集一切顺利,现在有问题。
如果我取2600行的子集(哪一行无所谓),行数仍然是2536。

我的问题:

  • 出了什么问题?
  • 谁对错误和错误结果负责?
  • 为什么它在客户端上工作,而不是在我的服务器上(同一台机器!)
  • 为什么不用一个较小的文件崩溃?

需要更多信息? 请留下评论。

更新1:
客户端和服务器都以32位应用程序运行。

有同样的问题。 我想通过网站读取30k行的excel文件。 但我只有8007行的子集。 我发现,如果我将应用程序池标识更改为pipe理员而不是networking服务,则一切正常。 此外,如果我将我的Excel文件转换为.xls Jet Provider也可以读取30k行。

然后我浏览论坛,发现并使用ExtendedProperties参数IMEX = 1尝试我的代码,并读取了所有30k行。