作为SQL Server代理作业运行SSIS包不会复制文件?
问题描述:
我有一个SSIS包我可以导入到集成服务我的服务器上,并没有问题运行。它所做的只是将文件从网络上的目录复制到正在运行的服务器上。作为SQL Server代理作业运行SSIS包不会复制文件?
当我执行SQL代理工作,它说的作业成功运行,但没有文件被复制。我确认源位置中存在文件,并且存在目标路径。我也使用绝对路径(没有映射驱动器)。
为什么它不复制任何文件,当我运行它作为SQL代理作业?
仅供参考 - 源目录实际上是在UNIX系统中,并以一个驱动器,你必须输入用户名/密码组合位置地图。
我有一个SQL代理工作运行作为NT SERVICE \ SQLSERVERAGENT,这是不是有权在UNIX系统中,用户的感觉。有没有办法以特定用户身份运行SQL作业?
在此先感谢。
答
您需要create a Credential,SQL Agent Proxy,然后assign the proxy account to the SQL Agent job step。代理账户specific to each subsystem(e.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
感谢。就在看到这个之前,我意识到我必须这样做。我通过SSMS做到了。我使用DOMAIN \ Administrator的身份创建了一个新凭据。然后使用具有SSIS包执行的凭证的新代理作为子系统。我为代理添加的原则是NT SERVICE \ SQLSERVERAGENT和NT SERVICE \ MSSQLSERVER。我将工作步骤更新为“Run As”作为新代理。我运行该软件包,但仍然没有文件被复制,也没有引发错误。我想我不确定证件身份应该是什么或代理原则应该是什么。他们看起来是否正确?谢谢。 – BBauer42 2013-05-14 14:46:27
没关系。我得到它的工作!我必须在服务器上创建一个本地用户帐户,使用与用于映射网络驱动器的相同用户/传递组合。然后我用它作为凭证的身份,并将作业复制到文件中!再次感谢!! – BBauer42 2013-05-14 15:09:25