ACE OLEDB 驱动程序对于较大的文件是否存在任何已知问题?
我使用下面的代码来检索 400Mb xls 文件中的工作表
public string[] GetWorkSheets()
{
var connectionString = "Provider=Microsoft.ACE.OleDb.12.0; data source=c:\filepath\filename.xls; Extended Properties=\"Excel 8.0;IMEX=1;HDR=YES;\"";
DataTable dataTable;
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();//Exception thrown here for large files
dataTable = connection.GetSchema("Tables");
}
int lenght = dataTable.Rows.Count;
string[] worksheets = new string[lenght];
for (int i = 0; i < lenght; i++)
{
worksheets[i] = dataTable.Rows[i]["TABLE_NAME"].ToString();
}
return worksheets;
}
我收到 OleDbException,其中包含消息超出系统资源。在到达此处之前,我不会循环调用此函数,也不会打开任何其他连接。此代码非常适合较小的文件。
我的系统有 4Gb RAM。在 Windows 7 64 位上运行。 Ace 驱动程序也是 64 位的。
知道可以做些什么来解决这个问题吗?
您使用的是 ACE,所以我假设它是 32 位平台。 win2k3?
您是否尝试过使用 boot.ini 中的 /3GB 开关?
除非在 Boot.ini 文件中使用 /3GB 开关,否则进程和应用程序的虚拟地址空间仍限制为 2 GB。http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx http://www.microsoft.com/whdc/system/platform/server/pae/paemem.mspx
使用 /3GB,您可以获得额外的 1 GB,这可能会起到作用?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)