来自ASP.net的SSIS包在客户端上不起作用,但在服务器上起作用

时间:2012-12-11 22:36:21

标签: iis permissions ssis

环境描述

我有一个从asp.net执行的SSIS任务,该包通过UNC路径从excel文件获取数据,并将数据放入sql server databaase。我已将SSIS部署到文件系统,它具有Windows身份验证数据库连接,并且IIS用户具有数据库访问权限。我可以作为我用来托管Web应用程序的AppPoolUser登录并打开/修改有问题的文件,以便那些基本权限存在。 Web App在x86中编译。

工作时:

  • 从我的用户或appPool用户下的服务器上的浏览器中的Web应用程序运行
  • 在通过BIDS运行的服务器上以我身份登录
  • 在通过BIDS运行的服务器上以AppPoolUser身份登录
  • 使用AppPoolUser从服务器上的计划任务运行时

什么时候无效

  • 从客户端浏览器运行时,即不是IIS托管asp.net应用程序的机器

我的问题

客户端和服务器的不同之处是什么?如何使其工作?我的印象是,在运行Web应用程序时,所有连接都通过AppPool用户,因此它应该在包含的任何计算机服务器上表现相同?

错误返回客户端浏览器

SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:" Microsoft Office Access数据库引擎" Hresult:0x80004005说明:" Microsoft Office Access数据库引擎无法打开或写入文件' \\ myserver \ My folder \ myfile.xlsx'。它已由其他用户专门打开,或者您需要获得查看和写入其数据的权限。"。 SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接管理器" MyExcelFileConnection"失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息。组件" Excel来源" (1)验证失败并返回错误代码0xC020801C。一个或多个组件验证失败。任务验证期间出错。

c#运行SSIS包的代码

        string pkgLocation;
        Package pkg;
        Application app;
        DTSExecResult pkgResults;
        string result = string.Empty;
        string dtsErrors = string.Empty;

        try
        {
            pkgLocation = packagePath;
            app = new Application();
            pkg = app.LoadPackage(pkgLocation, null);
            pkgResults = pkg.Execute();

            foreach (DtsError local_DtsError in pkg.Errors)
                dtsErrors += " " + local_DtsError.Description;

            result = pkgResults.ToString();
        }
        catch (Exception exception)
        {
            result = exception.Message;
        }

0 个答案:

没有答案