2013-10-30 28 views
0

我有一个执行ftp副本的C#.Net控制台应用程序从cmd命令提示符运行,但是当从SQL代理作业或从SQL Server管理工作室运行时,FTP部分该应用程序的失败:使用FTP操作从SQL运行C#控制台应用程序

declare @cmd varchar(200) 
select @cmd = 'c:\ftptest\test.exe'; 
exec master..xp_cmdshell @cmd ; 

从命令提示符下运行时,控制台应用程序执行FTP文件上传,但抛出一个异常,使用SQL路由时:

System.Net.WebException: The remote server returned an error: (400) Bad Request. 
at System.Net.FtpWebRequest.GetResponse() 

这听起来像一个权限问题,但同一用户在SQL Server Man中运行控制台应用程序agement Studio查询和来自命令提示符并且都在同一台服务器上运行。

回答

0

SSMS是,我设法只是通过代理配置在我的控制台应用程序的app.config中要解决的问题:

<system.net> 
    <defaultProxy 
     enabled="false" 
     useDefaultCredentials="false" 
    /> 
</system.net> 
1

首先,xp_cmdshell应该在SQL Server服务帐户的安全上下文中运行。

考虑到你的服务不应该运行,如果你的服务acc没有足够的权限(可能LocalService或甚至NetworkService不会)。检查在SQL Server配置管理器中。使用xp_cmdshell的一个xp_cmdshell_proxy_account

相关问题