我已经在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代码作为后台进程
答案 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的权限。如果没有,请授予适当的权限。