我的任务是通过SSIS从公司网络外部的位置下载RSS feed。我使用简单的脚本任务执行此操作:
public bool DownloadFeed()
{
WebClient web = new WebClient();
try
{
web.DownloadFile(@"http://bullshit.com/feeds/something.xml", @"c:\exchange\something.xml");
return true;
}
catch (WebException ex)
{
Dts.Events.FireError(0, "Download XML", ex.Message + "\r" + ex.StackTrace, string.Empty, 0);
return false;
}
finally {
web.Dispose();
}
在我的PC上从Visual Studion正常运行。但是,当我将dtsx包部署到MS SQL Server并创建作业时,该作业失败,并显示消息
Download Feed:Error: Unable to connect to the remote server
at System.Net.WebClient.DownloadFile(Uri address, String fileName)
at ST_7e86d0b503664f0abba3beedf3d81f00.ScriptMain.DownloadFeed()
该作业在可以访问Internet的服务AD帐户下运行,当我通过该帐户下的mstsc连接到服务器时,可以使用Web浏览器打开供稿。
我认为原因是我们公司的所有Internet访问都是通过代理服务器进行的。在Internet选项中正确设置了代理设置。但是我想开始工作的SQL Server代理不使用该设置,而是尝试绕过代理服务器下载文件。我已经要求管理员允许该服务器直接访问Internet,而无需使用代理,但这与我们的信息安全政策相抵触。
请问如何在SQL上设置代理服务器来解决我的问题?
答案 0 :(得分:0)
如果它是未经身份验证的代理,则应该这样做:
public bool DownloadFeed()
{
WebClient web = new WebClient();
WebProxy proxy = new WebProxy("[proxy address]", [proxy port]);
web.Proxy = proxy;
try
{
您应该能够从IE,Internet选项->连接->局域网设置或仅从管理员那里获取值。