Cannot update Excel source properties in SSIS package - sql-server

I have an SSIS package that imports an excel spreadsheet into an SQL Server 2008 database.
I have an Excel connection in the Connection Managers tab and it points to an Excel file on my local computer.
But when I open the Excel Source in Data Flow, if I try to view columns or change the "Name of Excel sheet:" I get this error.
Error at LoadMasterData [Connection manager "SourceConnectionExcel"]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft JET Database Engine" Hresult: 0x80004005 Description: "Unspecified error".
Error at Data Flow Task 1 [Source - Sheet1$ [1]]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "SourceConnectionExcel" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
The package was saved from SQL Server Management Studio using Import Data. When I run the package it works fine but I want to be able to specify the spreadsheet name as a variable. When I change the option to specify the sheet name as a variable, it won't let me close the window with the "OK" button, and just keeps giving me the same error as above.
Has anyone experienced this behaviour before that can help me get this working?
Thanks

Are you running on 32bit or 64bit? if you're on 64bit you need to know that there are no providers for Excel - you'll have to enforce the package to not use 64bit. Right click project, properties, debugging: Run64BitRuntime - set to false.

Related

SSIS Lookup Transformation error: The EXECUTE permission was denied on the object 'sp_describe_undeclared_parameters'

I'm upgrading SSIS packages from SQL Server 2008 R2 to 2017. After upgrading one of the packages, the parameterized query in the Advanced tab of a Lookup Transformation is now throwing a validation error. It is possible that this is the only package in the collection that uses a Partial Cache, since I couldn't find any successfully upgraded examples to compare it to.
When I tried to run the package, it logged these errors:
Error: 2019-02-11 10:49:40.11
Code: 0xC0202009
Source: Anonymized DFT [209]
Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The EXECUTE permission was denied on the object 'sp_describe_undeclared_parameters', database 'mssqlsystemresource', schema 'sys'.".
End Error
Error: 2019-02-11 10:49:40.15
Code: 0xC020824C
Source: Anonymized DFT [209]
Description: OLE DB error occurred while loading column metadata. Check SQLCommand and SqlCommandParam properties.
End Error
Error: 2019-02-11 10:49:40.18
Code: 0xC004706B
Source: Anonymized DFT SSIS.Pipeline
Description: "Anonymized DFT" failed validation and returned validation status "VS_ISBROKEN".
End Error
Error: 2019-02-11 10:49:40.22
Code: 0xC004700C
Source: Anonymized DFT SSIS.Pipeline
Description: One or more component failed validation.
End Error
Error: 2019-02-11 10:49:40.27
Code: 0xC0024107
Source: Anonymized DFT
Description: There were errors during task validation.
End Error
I was hoping to just re-map the parameters, but I get about the same set of errors by trying to open the Parameters dialog on the Advanced tab of the Lookup Transformation.
The obvious answer, based on the messaging, is that it's a permissions issue, but according to the documentation for sp_describe_undeclared_parameters:
Permissions
Requires permission to execute the #tsql argument.
Both I and the service account that the job runs under have permission to execute the parameterized query.
I did a side-by-side comparison of the both the Lookup Transformations and their corresponding Properties windows between the 2008 R2 package, which runs fine on the 2008 R2 server, and the new 2017 package. The only new property value I found was TreatDuplicateKeysAsError, but changing that has no effect on my situation.
Looking at the Advanced Editor, the column references in the ParameterMap appear to be correct, but the query isn't picking them up.
Is there more to the permissions issue than I'm seeing, or is there something else that I'm missing here?
I can't point to a specific source that suggested this as a possibility, but in the end I added an additional Connection Manager pointing to the same server and database as the original, but instead of using the SQL Server Native Client 11.0 provider, I changed it to Microsoft OLE DB Provider for SQL Server.
Boom. Validation error cleared; package is running.
While that's a solution, it's not a explanation, so if anyone wants to chime in, have at it. I've wasted most of a day chasing this ghost, so for the time being I'm going to take my running package and call it good enough for a Tuesday.

Error when importing Excel in SSIS

I am trying to import Excel sheet into SQL server through SSIS
The file was generated by SQL Server import task from another machine.
but when I try to run it the SSIS on my machine/Server
I get this error
TITLE: Package Validation Error
Package Validation Error
ADDITIONAL INFORMATION:
Error at Data Flow Task 1 [Source - 'detail_report (4)$' [53]]: SSIS
Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager
"SourceConnectionExcel" failed with error code 0xC0209302. There may
be error messages posted before this with more information on why the
AcquireConnection method call failed.
Error at Data Flow Task 1 [SSIS.Pipeline]: Source - 'detail_report
(4)$' failed validation and returned error code 0xC020801C.
Error at Data Flow Task 1 [SSIS.Pipeline]: One or more component
failed validation.
Error at Data Flow Task 1: There were errors during task validation.
Error at MobUp02 [Connection manager "SourceConnectionExcel"]: The
requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered.
If the 32-bit driver is not installed, run the package in 64-bit mode.
Error code: 0x00000000. An OLE DB record is available. Source:
"Microsoft OLE DB Service Components" Hresult: 0x80040154
Description: "Class not registered".
Error at MobUp02 [Connection manager "SourceConnectionExcel"]: The
'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local
machine. For more information, see
http://go.microsoft.com/fwlink/?LinkId=219816
(Microsoft.DataTransformationServices.VsIntegration)
I googled that and changed Run64bitRuntime to False, yet problem still exist
Anyone know how to fix that??
The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered.
I think you should download the Access Database Engine 2010 32-bit:
Microsoft Access Database Engine 2010 Redistributable
Additional information
SSIS The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered
The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered
You can do 2 workarounds to solve importing excel using 64-bit ms office:
Using an OLEDB Source instead of Excel Source
Using SQL Server Import and Export Wizard
Check the following detailed article, it contains very helpful information:
Importing data from 64-bit Excel in SSIS
Try to install access runtime 2010 and if not solve then access runtime 2007. It may solve your error.
Select 32 Or 64 bit as per your system.
Try to Check the following:
Server BI Installed Version
Install same Excel version on your machine
Put Excel File on same path or Change Excel source File path with your machine path.
Select the Project (not the solution) in Solution Explorer window, then from the Visual Studio 2019 menu select:
Project -> Properties
The Property Pages window opens, then select:
Configuration Properties -> Debugging -> Debug Options -> Run64BitRuntime
Put that option on False and the error will disappear. It worked for me.
As I was also facing this issue and I resolved it by installing this "Microsoft Access Database Engine 2010" software
Below I am attaching the link to download that software you need to install in local as well as the server where that SSIS package will run
Link-Cick here to download Microsoft Access Database Engine 2010

SSIS Excel File issue - Failure creating file

I have SSIS package that grabs excel file and load it to sql table .i get the following error when i run it. I have tried to make run on 64 bit to false. That did not work
i also have installed 64 bit access driver engin . That did not help either.
Error at Data Flow Task [Excel Source [2]]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Error at Data Flow Task [SSIS.Pipeline]: Excel Source failed validation and returned error code 0xC020801C.
Error at Data Flow Task [SSIS.Pipeline]: One or more component failed validation.
Error at Data Flow Task: There were errors during task validation.
Error at ABC [Connection manager "Excel Connection Manager"]: 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: "Failure creating file.".
Failure creating file
This error is thrown when the Excel connection manager cannot access to the chosen path, it might be caused by:
You are using a network path / try replacing with a local path
it might be pointed to your local server, but when it is deployed to another server it will throw error
you do not have permission to access the selected path from the account that is running the SSIS
path does not exists
I had the same error, to fix it I specified the IP of the shared folder instead of FQDN.
I had the same error too, my files are save in a folder OneDrive.
I fix the error by moving the files out from Onerive

Migration of SSIS packages from 2008 to 2012

We are trying to migrate all SSIS packages from 2008 R2 to 2012 version. I have changed config file to native client 11 and also made changes to the individual connection managers.
But, I am still getting this errors.
Can anyone please help me in solving these errors:
[Connection manager "xxxxxxxx"] Error: The requested OLE DB provider SQLNCLI10.1 is not registered. If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000.
An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".
[Connection manager "xxxxxxx"] Error: Consider changing the PROVIDER in the connection string to SQLNCLI11 or visit http://www.microsoft.com/downloads to find and install support for SQLNCLI10.1.
[Log provider "SSIS log provider for SQL Server"] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "xxxxxxx" failed with error code 0xC0209303. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Thanks a lot in advance!!
IF you go right click on your project name and under the debugging tab you can change the Run64BitRuntime to False and that may fix that problem.

DTS_E_OLEDBERROR. Error code: 0x80004005.Difference between SQl Native client and oledb provider for sql server

There was a communication link error while I was using SQL Server Native Client 10 in an SSIS Data Flow component.
Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has
occurred. Error code: 0x80004005. An OLE DB record is available.
Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005
Description: "Communication link failure".An OLE DB record is
available. Source: "Microsoft SQL Server Native Client 10.0"
Hresult: 0x80004005 Description: "TCP Provider: The specified network
name is no longer available.
So I changed from SQL Server Native Client 10 to Microsoft OLEDB Provider for SQL Server, hoping that it would run fine. This time got an error as shown below:
[Transacn_Tbl1[737]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE
DB error has occurred. Error code: 0x80004005. An OLE DB record is
available. Source: "Microsoft OLE DB Provider for SQL Server"
Hresult: 0x80004005 Description: "Unspecified error occurred on SQL
Server. Connection may have been terminated by the server.".
[Transacn_Tbl1[737]] Error: SSIS Error Code
DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "input "OLE DB Destination
Input" (750)" failed because error code 0xC020907B occurred, and the
error row disposition on "input "OLE DB Destination Input" (750)"
specifies failure on error. An error occurred on the specified object
of the specified component. There may be error messages posted before
this with more information about the failure.
What is the difference between these 2 providers? Which one should I use?
I ran into this issue after releasing a new SSIS project to the production environment.
At first, I was able to validate the package with success, but when I tried to execute the package, I got the DTS_E_OLEDBERROR. Error code: 0x80004005. message.
I tried to validate the package with the servername and password variables set to sensitive, but in this case the validation failed as well.
After setting the environment variables back to non-sensitive again and inserting the environment variable values, I was able to validate and execute the package.
To me it seems like in some cases the metadata in the SSISDB gets corrupted, but unfortunately I've not been able to point down the source of this issue.
I hope this will help someone. I've went through a lot of debug scenarios before I ended up with this (rather unsatisfying) solution.
It looks like you have to resolve this issue, you must change the permissions for the Temp directory of the SQL Server Agent Service startup account. Grant the Read permission and the Write permission to the SQL Server Agent proxy account for this directory.
http://support.microsoft.com/kb/933835
I changed connection to Provider=SQLNCLI11.1 and executed
successfully with parameters.
DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005
This obscure error can also mean something as benign as the OLE provider cannot find the expected Excel Worksheet.
I recently came across this error in an SSIS project and after several hours trying to track down what I believed was some configuration issue, it turned out to be the end user had simply changed the name of a Worksheet in the Excel data source.
Microsoft Messaging FTW!

Resources