在xp_cmdshell中执行exe文件不起作用

时间:2018-07-31 08:53:24

标签: sql-server xp-cmdshell

我已经在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代码作为后台进程

1 个答案:

答案 0 :(得分:1)

调用xp_cmdshell时,SQL Server不在乎输出,也不考虑任何故障。 但是,您可以将输出插入到临时表中并查看结果。请在下面的SSMS中运行以进行检查。

DECLARE @CMDSQL VARCHAR(1000)
    SET @CMDSQL = 'ftp -s:C:\Users\sss\Documents\script_ftp\ftp.txt'
    create table #output(output varchar(2000)) 

    insert into  #output
    Exec master..xp_cmdshell @CMDSQL

    select * from #output 
    drop table #output 

使用xp_cmdshell运行的命令使用SQL Server服务帐户运行OS命令。请检查SQL Server服务帐户是否具有执行ftp的权限。如果没有,请授予适当的权限。