Sql server 在xp#u cmdshell中执行exe文件不会';行不通
我在SQL Server中创建了一个用户,该用户具有:Sql server 在xp#u cmdshell中执行exe文件不会';行不通,sql-server,xp-cmdshell,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 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\u cmdshell
创建文件夹可以正常工作。当我运行“代码”时,它将VisualStudio代码作为后台进程,当调用xp*CMdS壳时,SQLServer不关心输出,不考虑任何失败。
但是,您可以将输出插入临时表并查看结果。请在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服务帐户运行操作系统命令。请检查SQL Server服务帐户是否具有执行ftp的权限。如果没有,请授予相应的权限 你的错误是?我是ms sql的新手,你能告诉我什么时候可以找到错误吗?正确的是在结果或消息下。SIT告诉我cmd的执行成功,但是,如果我启动visual studio代码,例如:SET@CMDSQL='code',它不会在触发器中启动
xp\u cmdshell
,执行FTP是一个非常糟糕的主意--很难排除故障,很难维护,性能很差,并发性不好。考虑从客户端代码中执行此操作。使用触发器在ServiceBroker队列中写入一个条目,以及从该队列读取请求并在必要时调用FTP的单独应用程序或服务。或者使用作业或计划任务。thnks,对于我正在使用SSMS的响应,如何查看表输出?不推荐使用从SELECT
中的触发器返回数据。虽然现在可以使用,但在SQL Server的未来版本中不会使用。我使用的是新版本的ms SQL,这可能是我没有看到任何结果的原因。现在仍然不推荐使用:我修改了答案。请使用相同的登录名在SSMS中运行以了解结果。