【发布时间】:2018-07-31 08:53:23
【问题描述】:
我在 SQL Server 中创建了一个用户:
CREATE LOGIN adminuser WITH PASSWORD = 'ABCDegf123';
GO
EXEC master..sp_addsrvrolemember @loginame = N'adminuser', @rolename = N'sysadmin'
GO
然后我与这个用户建立了联系。
我想做的是触发这个ftp命令:
ftp -s:C:\Users\sss\Documents\script_ftp\ftp.txt
所以我创建了一个触发器:
CREATE TRIGGER sss14
ON Table_1
AFTER INSERT
AS
DECLARE @CMDSQL VARCHAR(1000)
SET @CMDSQL = 'ftp -s:C:\Users\sss\Documents\script_ftp\ftp.txt'
EXEC master..xp_cmdshell @CMDSQL
但是,这不起作用。
请注意,使用xp_cmdshell 创建文件夹可以正常工作。当我运行“代码”时,它会将 Visual Studio 代码作为后台进程启动
【问题讨论】:
-
你的错误是?
-
我是 ms sql 的新手,你能告诉我什么时候能找到错误,
-
正确在结果或消息下
-
它告诉我 cmd 的执行成功,但是如果我启动 Visual Studio 代码,例如:SET @CMDSQL = 'code' 它不会启动
-
在触发器中使用
xp_cmdshell来执行FTP 是一个非常糟糕的主意- 难以排除故障、难以维护、性能糟糕、不能很好地处理并发。考虑从客户端代码执行此操作。使用触发器在 Service Broker 队列中写入条目,以及从该队列读取请求并在必要时调用 FTP 的单独应用程序或服务。或使用作业或计划任务。