SSIS部署到Catalog后执行脚本转换任务报407代理认证错误如何解决?
问题原因说明
407 Proxy Authentication Required错误本质是请求发起方没有通过公司代理服务器的身份校验,你本地VS执行包正常,是因为运行时继承了你当前登录Windows的用户身份,该身份已经获得了代理访问权限;而部署到SSIS Catalog后,包默认使用SSIS执行上下文的服务账号(通常是SQL Server代理服务启动账号或SSIS runtime的运行账号)发起请求,该账号没有代理访问权限,因此触发报错。
解决方案分两种情况,可根据实际场景选择:
不需要修改代码的网络侧方案
- 联系公司网络团队,将SSIS包运行使用的服务账号加入代理访问白名单,豁免该账号访问目标Web服务地址的代理认证要求
- 或在SSIS部署的服务器上,为运行SSIS包的服务账号配置系统级代理,同时存储对应的代理认证凭据
需要修改代码的适配方案
你当前的代码没有显式配置Web请求的代理逻辑,默认调用系统代理但未携带认证信息,可在DownloadJson方法中添加代理配置即可,代码示例如下:
private string DownloadJson(string url) { // 初始化公司代理对象,代理地址和端口可存为SSIS变量避免硬编码 WebProxy proxy = new WebProxy(Variables.ProxyAddress, false); // 配置代理认证信息,账号密码建议存为加密的SSIS敏感变量 proxy.Credentials = new NetworkCredential(Variables.ProxyUser, Variables.ProxyPwd, Variables.ProxyDomain); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Proxy = proxy; // 如果运行账号已申请代理权限,也可直接用默认凭证,不需要单独传账号密码 // request.Proxy.Credentials = CredentialCache.DefaultCredentials; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { return reader.ReadToEnd(); } }
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

