1

我有一个简单的 SSIS 包,它在控制流上有一个执行 SQL 任务控件,它从数据库中获取一些值

在 DataFlow 中,我使用了一个脚本组件,它基于“执行 SQL 任务”给出的值,执行以下操作:

public override void CreateNewOutputRows()
    {

        try
        {

            string loginURL = "http://maps.googleapis.com/maps/api/geocode/xml?address=" + Variables.ProjectAddress + "&sensor=true";
            WebClient client = new WebClient();

            string downloadString = client.DownloadString(loginURL);
            XmlDocument xml = new XmlDocument();
            xml.LoadXml(downloadString);

    ///// setting output buffer variables
         }
       catch(Exception ex)
       {

       }
}

所以基本上我在请求包内的纬度和经度的网络服务。然后将检索到的值更新到数据库中:

当我从 Visual Studio SSIS 项目控制台运行包时,一切正常。但是当我尝试通过 SQL Server 2008 R2 Job 运行包时,什么也没有发生。作业执行成功,但没有更新(或插入)行。

我尝试将包导入 SQL MSDB 并将保护级别设置为下拉列表中的所有项目,如此处给出 ......然后从 SQL Job 运行这个导入的包。还是……什么都没发生。

有谁知道怎么了??我如何处理以下事实:

  1. 它与 sql 用户发出 Web 服务请求的权限有关。我该如何配置呢?

2.与导入的ssis包的配置文件有关。我应该寻找什么?

请帮帮我:我希望我已经提供了调查问题所需的所有信息

4

1 回答 1

1

是您计算机上的 SQL Server 实例上的作业吗?我问是因为它可能是从 SQL Server 到您拥有 Web 服务的计算机的防火墙或权限问题。

此外,我建议删除该 try catch 并启用包配置,以便您查看它是否引发错误

关于保护级别,如果您使用 EncryptSensitiveWithUserKey,则该程序包不会加载数据库敏感信息(登录名和密码),除非它位于您开发它的计算机上。同样的事情适用于 EncryptAllWithUserKey 但在这种情况下它甚至不会打开包

于 2012-04-10T12:22:51.243 回答