SSIS Package only executes when windows account logged into server - mysql

This one is giving me a headache.
I have created some SSIS packages in Visual Studio 2015 with the following settings;
domain/user as
Project Protection Level: EncryptSensitiveWithPassword (password is same as domain/user)
Package Protection Level: EncryptSensitiveWithPassword (password is same as domain/user)
ODBC Connection is tested and working.
SSIS is from SQL Server 2014 => MySQL 5.6, both the 64 and 32 bit ODBC drivers are installed on the Windows Server 2012 box for MySQL.
Deployed package to Integration Service Catalogs.
When I run the package it works 100%, no errors. But only when the AD account domain/user is logged into the Windows Server 2012 box that the SQL Server is implemented on.
When the domain/user is not logged in the package fails with the following error:
Package: Error: An ODBC error -1 has occurred.
Data Flow Task: Error. ODBC Destination failed validation and returned error code 0x80004005
Data Flow Task: Error: The AcquireConnection method call to the connection manager DATA_WH.root failed with error code 0xC0014009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
On SQL Server:
Created Security..Logins..domain/user
Assigned serveradmin role
Mapped to SSISDB and msdb
Status is granted permission to connect to database
Login is enabled
Created credential called database_credential
identity: domain/user
password: same as domain/user
Mapped domain/user to a database_credential
In SSIS job activity the job is set to run as database_credential as type SQL Server Integration Services Package.
As long as I am logged in as domain/user on the Windows Server, doesn't even need to be logged in to SQL Server the SSIS package runs perfectly. When the user isn't logged in it falls over.
This is really confusing me. I'm turning in circles and need some help.
Anyone any ideas?

For anyone interested in this, or having the same issue, I implemented a workaround by creating a scheduled task in the windows task scheduler that ran the package using DTEXEC.exe from the command line.
It worked perfectly, the only issue is there is no history as you would normally get using the SSIS service in SQL Server, but on the upside it works regardless of the user being logged in or not.
Hope someone finds this useful.

Related

SSIS error when run via SQL job while connecting to ms-access database (Unexpected Termination)

I have a OLEDB task that connects to ms-access database on local file system and dumps data into sql database.
Access db connection string is: Data Source=\\my-share\accessdbfile.accdb;Provider=Microsoft.ACE.OLEDB.16.0;
The SSIS package runs OK in visual studio. Access 2016 32-bit runtime is installed on this computer.
After deployment to SSIS catalog, right click and execute works OK. Access 2016 64-bit runtime is installed on this computer.
When this package is scheduled to run via SQL Agent job, using proxy/credential [domain user - example: domainname\user1] (having read permission on the access db file), then the job fails. The SSIS execution report shows error as: Unexpected Termination. There is no further information.
Suppose if I add the proxy credential (domainname\user1) to the local administrators group (in computer management) then the SQL Job runs OK. What could be the solution to this so I can give only the minimum required permissions?
The error is very difficult to debug as it doesn't occur when running via visual studio. Even when deployed to the SQL server and run from the SSIS catalog, the execution works OK. The error occurs only when the package is run via SQL server agent job (via credential/proxy) - the SSIS execution report doesn't show any helpful messages; and surprisingly the error gets resolved when the credential is added as local administrator on the computer - which is a bad practice.
The solution is analyse what kind of ms access file you are using and appropriately use the correct access runtime version (2013 vs 2016) and the correct provider value in the connection string.
Access runtime:
In my case, I uninstalled Access 2016 64-bit runtime and installed Access 2013 64-bit runtime.
Provider version:
I changed the provider version from 16.0 to 15.0, as shown below-
Before: Data Source=\\my-share\accessdbfile.accdb;Provider=Microsoft.ACE.OLEDB.16.0;
After: Data Source=\\my-share\accessdbfile.accdb;Provider=Microsoft.ACE.OLEDB.15.0;
Note:
There is no need to add the user to the local administrator group.
There is no need to login to the computer using that account.
Only read permission (under windows folder security) is sufficient assuming the SSIS packge will only read the ms access database.
It's hard to debug this only with the information provided, but in general:
The user running the job requires at least write and delete access on the underlying folder in which the Access database resides. This is required to generate a lockfile for the database.
If this is undesirable because the job may be modified by a malicious user, I've seen deployments where a copy is made in a temporary folder with write access and a size quota, and that temporary folder is removed as soon as the job finishes, regardless of if the job succeeded.

Process Azure Analysis sevice via SSIS. Error: Unable to connect to the remote server

I hope you are well..
I really need your help to help me resolve an issue.
I created an SSIS package (SSIS 2012) which processes a tabular model in Azure AS.
To do this I created a task script (C # 2010) and I had to add 2 references Microsoft.AnalysisService.Core and Microsoft.AnalysisService.Tabular.
The package runs fine when I run it locally.
However when I deploy it on the SSIS server and run it I get this error: "Error: Unable to connect to the remote server".
Do you know where this error could come from?
How can I resolve this error?

ssis package unexpected termination

I am migrating reporting guff to a new 2016 sql server.
One integration package which I have upgraded, deployed and created a job for runs and then terminates unexpectedly. The only messages are that validation starts then it terminates.
The event viewer just shows a warning saying the job failed.
The package is run by a proxy account that also has access to a file share with excel documents on it. If I run Management studio with that account and manually execute the package I get the exact same messages. So I don't think it has anything to do with the account or permissions etc. If I run the package in visual studio it works fine.
Any suggestions on next trouble shooting steps?? Or how I can view better logs/ error files??
Thanks in advance
Kirsty

OLE DB provider Microsoft.ACE.OLEDB.15.0 Mssing

I have deployed SSIS package that fetch data from Microsoft Access database. it works fine Locally and on Server i am running it using DTESEX 32 bit but getting following error
The requested OLE DB provider Microsoft.ACE.OLEDB.15.0 is not registered. If the 32-bit driver is not installed, run the package in 64-bit mode. Error code: 0x00000000.
How can i make sure that OLE DB provider Microsoft.ACE.OLEDB.15.0 exist on server
I tried importing data from 64bit excel file into SQL using SSMS's import wizard and got got this error :microsoft ace oledb 15.0 provider is not registered on the local machine.
One of my colleagues showed me to use 64bit import wizard rather than 32 bit defualt import wizard that I have in SSMS. Here is a short video I posted about successfully loading the data on youtube
https://www.youtube.com/watch?v=aIs-vbaGSzg
Per #Gaurav Saneja's answer, you can use the "SQL Server 2016 Import and Export Data (64-bit)" (found in start menu). SSMS is 32-bit, so it attempts to load the 32-bit version of the DLL, but fails because you (likely) have the 64 bit version of Office installed.
Some people are recommending the installation of AccessRuntime_x86_en-us.exe from
https://www.microsoft.com/en-us/download/details.aspx?id=39358
however, for me this fails with the error:
We can't install the 32-bit version of Office because we found the following 64-bit programs on your PC: -list of installed Office apps here-
Until Microsoft provides a 64-bit version of SSMS, we are stuck using the method of launching the 64-bit version of the Data Import wizard independently (as described above).
Please try installing the Access 2013 runtime on the server, which should enable the use of that provider (at least in 32-bit).
The exception indicates that it is not able to find the OLE DB provider specified, which can be installed through standard Access installations or by installing the runtime.
Environment:
Machine (64bit)
Operating System Windows 10 Pro (64bit)
Visual Studio 2017 (32bit)
Visual Studio 2017 (SSDT) (32bit)
Office 2016 (64bit)
Attempted to use Excel in SSIS. Received the following errors: when I select 2016 or 2013 in connection manager. Issue to be resolved.
Error for 2016:
Exception from HRESULT: 0xC020801C Error at Package: The requested
OLE DB provider Microsoft.ACE.OLEDB.16.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 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 0xC0209302. There may be
error messages posted before this with more information on why the
AcquireConnection method call failed.
Error for 2013:
Exception from HRESULT: 0xC020801C Error at Package: The requested
OLE DB provider Microsoft.ACE.OLEDB.15.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 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 0xC0209302. There may be
error messages posted before this with more information on why the
AcquireConnection method call failed.
Solution:
Installed the following:
I needed 64bit Access Database Engine 2016 Redistribution for another portion of the project. Unstalling it was not a solution, but the 2007 Data connectivity component and Data Access Engine 2016 can live side by side:
2007 (USE 32bit) : 2007 Office System Driver Data Connectivity Components
https://www.microsoft.com/en-us/download/details.aspx?id=23734
2016 (USE 64bit) : Microsoft Access Database Engine 2016 Redistributable
https://www.microsoft.com/en-us/download/details.aspx?id=54920
Finally:
Inside of Visual Studio 2017 (SSDT) follow the following instructions to Adjust Project:
Open SSIS project
Select the project in Solution Explorer
Select Properties
Expand Configuration Properties in the left pane
Click Debugging and change Run64BitRuntime to False
Click OK
Adjust Connection Manager:
7. Open Excel Connection Manager
8. Click the drop-down menu. Excel Options work:Excel 97-2003 and Excel 2007-2010
9. Click Ok
Open Excel Source component:
10. Select the Excel connection manager
11. Select Table View from Data Access Mode
12. Select Excel Sheet
You should be able to Preview the data in the Excel sheet

Package working in visual studio but not in Job agent

I have moved my packages to another server. Now on that server when I am executing my packages on visual studio then it is working fine. But when I am deploying the same package and try to execute it both via integration services engine or SQL Job.. I am getting below error
An error occurred with the following error message: "Cannot bulk load. The file "C:\ABC\PQR\XYZ\myFile.txt" does not exist.".
Edit
Somehow that issue is resolved but now I am into one more issue
Packages installed in MSDB is working fine when I am clicking on Run Package. But when I am creating SQL Agent job for the same packages it is not working.
I have tried setting "rely on server encryption" but no luck :-(
I would suggest to check whether folder C:\ABC\PQR\XYZ\ have read permissions for an account used to run SQL Agent jobs.
If this is **C:\ABC\PQR\XYZ** mapped drive connection then use the UNC path it worked fine through the server agent.