gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:04:09 24 4
gpt4 key购买 nike

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

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

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

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

我有一种感觉,SQL Agent Job 以 NT SERVICE\SQLSERVERAGENT 身份运行,这不是具有 UNIX box 权限的用户。有没有办法以特定用户身份运行 SQL 作业?

提前致谢。

最佳答案

您需要create a Credential , 一个 SQL 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

关于ssis - 将 SSIS 包作为 SQL Server 代理作业运行不会复制文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16544378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com