理想情况下,希望从SQL查询或SQL代理作业运行某些内容,以FTP将文件上传到外部站点,但不能使用xp_cmdshell。
是的。您需要将工作拆分为两个单独的任务:
- 如何从 SQL Server 中运行可执行文件或批处理程序,而无需求助于xp_cmdshell。
有关如何执行此操作的示例可以在:
https://www.mssqltips.com/sqlservertip/2014/replace-xpcmdshell-command-line-use-with-sql-server-agent/中找到。
您应该修改此示例以满足您的特定需求。建议的存储过程将:- run 命令作为参数在创建的动态 SQL 作业中传递(指示 CmdExec 子系统)
- 等待 SQL 作业完成(查询 msdb.dbo.sysjobactivity)或在达到预定义超时值时终止作业
- 返回作业执行结果(查询 msdb.dbo.sysjobhistory)
- 删除作业
注意:需要完整版本的 SQL Server。如果您使用的是快速版本,则必须手动定义 Windows 计划任务。
- 如何使用批处理程序通过 ftp 发送文件。
请参阅:
如何使用批处理文件进行ftp?