SQL xp\u cmdshell在服务器之间复制文件
我正在尝试将特定文件夹中的所有.zip文件移动到另一个文件夹。源文件夹位于另一台服务器上,当前我正在使用SQL xp\u cmdshell在服务器之间复制文件,sql,sql-server,sql-agent-job,xp-cmdshell,Sql,Sql Server,Sql Agent Job,Xp Cmdshell,我正在尝试将特定文件夹中的所有.zip文件移动到另一个文件夹。源文件夹位于另一台服务器上,当前我正在使用 EXECUTE xp_cmdshell 'copy \\server1\e$\ETL\*.zip \\server2\e$\ETL\' GO 如果我同时登录到这两个服务器,这是可行的,但目标是通过sql server作业代理自动化此过程。我试过了 EXECUTE sp_xp_cmdshell_proxy_account 'domain\useracc','pass' GO EXECUTE
EXECUTE xp_cmdshell 'copy \\server1\e$\ETL\*.zip \\server2\e$\ETL\'
GO
如果我同时登录到这两个服务器,这是可行的,但目标是通过sql server作业代理自动化此过程。我试过了
EXECUTE sp_xp_cmdshell_proxy_account 'domain\useracc','pass'
GO
EXECUTE xp_cmdshell 'copy \\server1\e$\ETL\*.zip \\server2\e$\ETL\'
GO
但我收到以下错误
执行sp_xp_cmdshell_proxy_帐户时出错。可能的原因:提供的帐户无效或无法创建“##xp#u cmdshell_proxy#u account##”凭据。错误代码:“0”
也不确定这是否是我的解决方案。请帮助我如何做到这一点。server1上的文件名每天都会更改名称和数量。我强烈建议…不要使用xp\u cmdshell。它在你的表面区域打开了一个大的安全整体,使你容易受到攻击。应禁用xp\u cmdshell 相反,如果您想使用server agent自动执行此操作,您有2个选项。我的首选方案是编写一个带有文件系统任务的简单SSIS包,并使用server agent计划此包。SSIS在这类任务中没有得到充分利用,但实际上相当擅长
或者,重新编写脚本以使用Server Agent CmdExec作业步骤。这不需要启用xp_cmdshell并减少攻击面 我强烈建议…不要使用xp\u cmdshell。它在你的表面区域打开了一个大的安全整体,使你容易受到攻击。应禁用xp\u cmdshell 相反,如果您想使用服务器代理自动执行此操作,则有两个选项。我的首选方案是编写一个带有文件系统任务的简单SSIS包,并使用server agent计划此包。SSIS在这类任务中没有得到充分利用,但实际上相当擅长
或者,重新编写脚本以使用Server Agent CmdExec作业步骤。这不需要启用xp_cmdshell并减少攻击面 我发现以下几点对我有效:
将登录更改为在两台服务器上都具有访问权限的用户。然后重新编写脚本以使用Server Agent CmdExec作业步骤(谢谢Pete Carter)我发现以下方法对我有效: