I am trying to import data from an Excel (.xlsx) file into SQL Server. Excel file size is pretty big (128MB). It works fine if run in debug mode in SSDT but starts failing when I am trying to deploy it and run in SSISDB. I am using provider=Microsoft.ACE.OLEDB.12.0; for excel connector and running in 32 bit compatible mode in both SSDT and in SSISDB catalog.
To single out the problem I created the package with only 1 dataflow task. Source is excel connection and destination in OLEDB destination connecting to local SQL Server 2012 database. I tried changing the buffer size etc and finally I got the following error message.
I am getting following errors:
OnError | View Context | 06.04.2015 10:06:24 | Data Flow Task:Error: Excel Source failed the pre-execute phase and returned error code 0xC0202009. |
OnError | View Context | 06.04.2015 10:06:24 | Data Flow Task:Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft Access Database Engine" Hresult: 0x80004005 Description: "Unexpected error from external database driver (1).". |
Earlier before changing any properties I was getting memory related errors like:
OnError | 06.04.2015 11:26:41 | Not enough storage is available to process this command. (Exception from HRESULT: 0x80070008); at Microsoft.SqlServer.Dts.Runtime.DtsContainer.Execute(Connections connections, Variables variables, IDTSEvents events, IDTSLogging log, Object transaction) at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ISServerExecutionEvents.StartPackage() at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.StartPackage() at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.PerformOperation() | Transact-SQL stored procedure | ||||
OnError | 06.04.2015 11:26:40 | Not enough storage is available to process this command. (Exception from HRESULT: 0x80070008); at Microsoft.SqlServer.Dts.Runtime.DtsContainer.Execute(Connections connections, Variables variables, IDTSEvents events, IDTSLogging log, Object transaction) at Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ISServerExecutionEvents.StartPackage() | Transact-SQL stored procedure |
DiagnosticEx | 06.04.2015 11:26:40 | <?xml version="1.0"?><DTS:ProcessMemoryUsage xmlns:DTS="www.microsoft.com/SqlServer/Dts"><DTS:PeakWorkingSetSize>1352765440</DTS:PeakWorkingSetSize></DTS:ProcessMemoryUsage> |
Although I did observed that there was still sufficient memory on the server. (Server is a VM having 16GB RAM and MAX utilization did not reached beyond 6GB)
I tried using both ways - Excel file on local and Excel file on shared path.
I am using
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Any suggestions will be more than welcome?
Also wanted to add that the same package is running fine for other smaller excel files.
In the original design I had a For Each enumerator to execute 15 files - all other 14 except for this large file were getting executed successfully.