【问题标题】:Configure HTTP Proxy for SQL Server Agent为 SQL Server 代理配置 HTTP 代理
【发布时间】:2019-12-13 01:21:53
【问题描述】:

我的任务是通过 SSIS 从我们公司网络之外的位置下载 RSS 提要。我使用简单的脚本任务来做到这一点:

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 连接到服务器时,我可以使用网络浏览器打开提要。

我认为原因是我们公司的所有互联网访问都是通过代理服务器。代理设置已在 Internet 选项中正确设置。但我猜想启动作业的 SQL Server 代理不使用该设置并尝试绕过代理服务器下载文件。我已要求我们的管理员允许该服务器直接访问 Internet,无需代理,但这与我们的信息安全政策相矛盾。

您能否建议如何在 SQL 中设置代理服务器来解决我的问题?

【问题讨论】:

    标签: sql-server ssis proxy


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!但是我们的代理需要身份验证。 A 这样做了: WebProxy proxy = new WebProxy("proxy:port", true, bypassList, CredentialCache.DefaultNetworkCredentials);但它返回错误“需要授权”
    • 我添加了 web.Proxy = WebRequest.DefaultWebProxy;如果我手动启动作业,它会起作用,但如果它是由计划触发的 - 它会失败并显示消息 Download Feed:Error: Unable to connect to the remote server at System.Net.WebClient.DownloadFile(Uri address, String fileName) at ST_7e86d0b503664f0abba3beedf3d81f00。 ScriptMain.DownloadFeed()
    • 天哪,看起来更近了,但不完全。对完整性检查的临时短期测试:proxy.Credentials = new NetworkCredential("domainuser", "domainpassword");接下来是再次尝试 DefaultNetworkCredentials + SQL Server -> 安全 -> 凭据(健全性检查),SQL 代理代理 -> SSIS 包执行 -> 代理,作业的运行方式(代理)
    • 我说的是 DefaultNetworkCredentials,经过健全性检查后应该是 DefaultWebProxy。
    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    相关资源
    最近更新 更多