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

问题描述:

我有一个SSIS包我可以导入到集成服务我的服务器上,并没有问题运行。它所做的只是将文件从网络上的目录复制到正在运行的服务器上。作为SQL Server代理作业运行SSIS包不会复制文件?

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

为什么它不复制任何文件,当我运行它作为SQL代理作业?

仅供参考 - 源目录实际上是在UNIX系统中,并以一个驱动器,你必须输入用户名/密码组合位置地图。

我有一个SQL代理工作运行作为NT SERVICE \ SQLSERVERAGENT,这是不是有权在UNIX系统中,用户的感觉。有没有办法以特定用户身份运行SQL作业?

在此先感谢。

您需要create a CredentialSQL Agent Proxy,然后assign the proxy account to the SQL Agent job step。代理账户specific to each subsysteme.g 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 
+0

感谢。就在看到这个之前,我意识到我必须这样做。我通过SSMS做到了。我使用DOMAIN \ Administrator的身份创建了一个新凭据。然后使用具有SSIS包执行的凭证的新代理作为子系统。我为代理添加的原则是NT SERVICE \ SQLSERVERAGENT和NT SERVICE \ MSSQLSERVER。我将工作步骤更新为“Run As”作为新代理。我运行该软件包,但仍然没有文件被复制,也没有引发错误。我想我不确定证件身份应该是什么或代理原则应该是什么。他们看起来是否正确?谢谢。 – BBauer42 2013-05-14 14:46:27

+1

没关系。我得到它的工作!我必须在服务器上创建一个本地用户帐户,使用与用于映射网络驱动器的相同用户/传递组合。然后我用它作为凭证的身份,并将作业复制到文件中!再次感谢!! – BBauer42 2013-05-14 15:09:25