我想使用 sql 批量复制来加载数据*.xlsx
文件到数据库。但是,当文件大小超过大约 1mb 时,我遇到了问题。当我尝试打开时OleDbConnection
我收到一个错误
No error message available, result code: E_FAIL(0x80004005)
有人对这种行为有想法吗?
附:如果文件大小小于上面提到的,一切都会按预期进行。
string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0 Xml;";
// Create the connection object
OleDbConnection oledbConn = new OleDbConnection(connString);
// Open connection
oledbConn.Open();
// Create OleDbCommand object and select data from worksheet
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + WorkSheetName + "$" + DataRange + "]", oledbConn);
OleDbDataReader dr = cmd.ExecuteReader();
string ProfDbBulkCopyConnString = ConfigurationManager.ConnectionStrings["DbBulkCopyConnString"].ToString();
SqlBulkCopy sb = new SqlBulkCopy(ProfDbBulkCopyConnString);
sb.ColumnMappings.Add("Status", "ActionStatus");
sb.ColumnMappings.Add("Process", "ProcessExec");
sb.DestinationTableName = "dba.Execute";
sb.WriteToServer(dr);
只是修复的简要描述。欲了解更多信息,我建议访问:
- https://social.msdn.microsoft.com/Forums/en-US/4d1eeb6d-436d-4595-8645-fde90b2f9b18/oledb-error-opening-large-excel-2007-files-on-web-server?forum= adodotnet数据提供商 https://social.msdn.microsoft.com/Forums/en-US/4d1eeb6d-436d-4595-8645-fde90b2f9b18/oledb-error-opening-large-excel-2007-files-on-web-server?forum=adodotnetdataproviders
- 导出到 Excel 电子表格 (XLSX) 失败 https://stackoverflow.com/questions/23788972/export-to-excel-spreadsheet-xlsx-failing
- 当有 166,110 行时,Microsoft ACE OLEDB 连接创建空 Excel https://stackoverflow.com/questions/10521782/microsoft-ace-oledb-connection-creating-empty-excel-when-there-are-166-110-rows
本质上,xlsx 格式是某种带有一堆 xml 文件的 zip 存档。因此,首先 ACEOLEDB 提供程序尝试将所有数据直接解压缩到内存缓冲区,但在大型 xlsx 文件提供程序无法将所有数据解压缩到内存缓冲区的情况下,它强制在硬盘驱动器上创建临时文件。如果用户无权访问硬盘驱动器上的 Content.MSO 文件夹,则会出现上述问题。
文件夹路径取决于您的环境。就我而言,它是 C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO(64 位 Windows Server 2008 R2 上的 32 位驱动程序)。
因此,授予用户“IIS AppPool\DefaultAppPool”对 Content.MSO 的访问权限,问题就会消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)