为SQL Server代理配置HTTP代理

时间:2019-12-13 01:21:53

标签: sql-server ssis proxy

我的任务是通过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上设置代理服务器来解决我的问题?

1 个答案:

答案 0 :(得分:0)

如果它是未经身份验证的代理,则应该这样做:

public bool DownloadFeed()
{
    WebClient web = new WebClient();
    WebProxy proxy = new WebProxy("[proxy address]", [proxy port]);
    web.Proxy = proxy;
    try
    {

您应该能够从IE,Internet选项->连接->局域网设置或仅从管理员那里获取值。