How to schedule SSIS package to run as something other than SQL Agent Service Account
-
03-07-2019 - |
Question
In SQL Server 2005, is it possible to schedule an SSIS package to run something other than the SQL Agent Service Account?
I've got an SSIS package that makes a connection to a database and runs a stored procedure. My criteria is that I will not specify usernames/passwords in a package or package configuration, so I want to use integrated authentication.
The problem is that by default a step in a job runs as SQL Agent Service Account, and our server group does not want to grant that account execute rights on the stored procedures that my package will execute. So we're trying to find a way to specify a different account in the step, so the package will run under a different context. Is that possible?
Solution
If you want to execute the SSIS package from SQL Agent jobs, then you can create a proxy. Check here for more information.
OTHER TIPS
If you have access to SQL Server Agent
through SQL Server Management Studio, here are the steps to create a job using the Graphical User Interface. The steps show how to create an SQL job to run SSIS using SQL Agent Service Account and also how to create a proxy to run under a different using different credentials.
Go to SQL Server Management Studio. Expand
SQL Server Agent
and right-click on Jobs, then selectNew Job...
as shown in screenshot #1.Provide a name and Owner by default will be the account that creates the job but you can change it according to your requirements. Assign a Category if you would like to and also provide a description. Refer screenshot #2.
On the Steps section, click
New...
as shown in screenshot #3.On the New Job Step dialog, provide a Step name. Select
SQL Server Inegration Services Package
from Type. This step will run underSQL Agent Service Account
by default. Select the package source asFile system
and browse to the package path by clicking on ellipsis. This will populate the Package path. Refer screenshot #4. If you don't want the step to execute under theSQL Agent Service Account
, then refer the steps #8 - 9 to know how you can use a different account.If you have a SSIS configuration file (.dtsConfig) for the package, click on the Configurations tab and add the Configuration file as shown in screenshot #5.
Click OK and there is the package in step 1 as shown in screenshot #6. Similarly, you can create different steps.
Once the job has been created, you can right-click on the job and select
Script Job as --> CREATE To --> New Query Editor Window
to generate the script as shown in screenshot #7.To run the SSIS step under different account, on the Management Studio, navigate to
Security --> right-click on Cedentials --> select New Credential...
as shown in screenshot #8.On the
New Credential
dialog, provide a Credential name, Windows account and Password under which you would like to execute SSIS steps in SQL jobs. Refer screenshot #9. Credential will be created as shown in screenshot #10.Next, we need to create a proxy. On the Management Studio, navigate to
SQL Server Agent --> Proxies --> right-click on SSIS Package Execution --> select New Proxy...
as shown in screenshot #11.On the New Proxy Account window, provide a Proxy name, select the newly created Credential, provide a description and select SQL Server Integration Services Package as shown in screenshot #12. Proxy account should be created as shown in screenshot #13.
Now, if you go back to the step in SQL job, you should see the newly created Proxy account in the Run as drop down. Refer screenshot #14.
Hope that helps.
Screenshot #1:
Screenshot #2:
Screenshot #3:
Screenshot #4:
Screenshot #5:
Screenshot #6:
Screenshot #7:
Screenshot #8:
Screenshot #9:
Screenshot #10:
Screenshot #11:
Screenshot #12:
Screenshot #13:
Screenshot #14:
With SQL 2012 I got an error that the choosen user account is not allowed to be a proxy. Using the following query solved this issue:
use msdb
GO
exec sp_grant_login_to_proxy @login_name = 'MyLoginName', @proxy_name= 'proxy_SSIS'