将SSIS包作为SQL Server代理作业运行不会复制文件?

时间:2013-05-14 13:21:09

标签: ssis

我有一个SSIS包,我可以在我的服务器上导入Integration Services并运行没有问题。它所做的就是将文件从网络上的目录复制到运行它的服务器上。

当我执行SQL代理作业时,它表示作业成功运行但没有复制文件。我验证源位置中存在文件并且目标路径存在。我也使用绝对路径(没有映射驱动器)。

为什么在将其作为SQL代理作业运行时不复制任何文件?

仅供参考 - 源目录实际上位于UNIX机器上,要将驱动器映射到该位置,您必须输入用户/密码组合。

我感觉SQL代理作业运行为NT SERVICE \ SQLSERVERAGENT,它不是具有UNIX框权限的用户。有没有办法以特定用户身份运行SQL作业?

提前致谢。

1 个答案:

答案 0 :(得分:5)

您需要create a CredentialSQL Agent Proxy,然后assign the proxy account to the SQL Agent job step。代理帐户为specific to each subsystem例如Powershell,CmdExec,SSIS等

-- creating credential
USE [master]
GO
CREATE CREDENTIAL [Superuser] WITH IDENTITY = N'DOMAIN\account', SECRET = N'mypassword'
GO

-- creating proxy for CmdExec subsystem, adding principal
USE [msdb]
GO
EXEC msdb.dbo.sp_add_proxy @proxy_name=N'My custom proxy',@credential_name=N'Superuser', 
        @enabled=1
GO
EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'My custom proxy', @subsystem_id=3
GO
EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'My custom proxy', @fixed_server_role=N'sysadmin'
GO

-- assigning job step to run as a given proxy user
USE [msdb]
GO
EXEC msdb.dbo.sp_update_jobstep @job_id=N'0df2dac2-4754-46cd-b0bf-05ef65e1f87e', @step_id=1 , @subsystem=N'CmdExec', 
    @proxy_name=N'My custom proxy'
GO
相关问题