【问题标题】:SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Runs fine on BIDS and cmd but fails on API callSSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。在 BIDS 和 cmd 上运行良好,但在 API 调用上失败
【发布时间】:2014-06-20 17:55:36
【问题描述】:

我有一个 SSIS 包,它在我的本地系统上读取 Excel 文件(数据流源)并使用 OLEDB 目标数据流项将数据传输到 SQL Server 本地数据库,其中涉及派生列和数据转换步骤。我已经设置:

Run64BitRuntime 为假

TransactionOption 支持

DelayValidation 为 True(数据流任务和连接)

ProtectionLevel 为 DontSaveSensitive(因为我使用的是 Windows 身份验证)

当不以管理员身份运行 BIDS 时,我收到警告“无法打开全局共享内存”(即使我已将我的帐户用户添加到 Windows 性能组中,该用户也是管理员)但程序包执行良好并将 excel 文件中的所有 20K+ 行导入到表中。从 cmd 调用时也能正常运行。

现在,我的要求是从 API 调用这个包。下面是我用来调用这个包的基本代码:

Package pkg;
Application app = new Application();
DTSExecResult pkgResults;
Variables vars;
string FileName = @"D:\Users\rohit\Documents\Visual Studio 2008\Projects\OutboundPerformance\SalesPerf\ExcelDataInput.dtsx";
pkg = app.LoadPackage(FileName, null);
vars = pkg.Variables;
vars["var_fk_CampaignId"].Value = ddlCampaignName.SelectedValue;
pkgResults = pkg.Execute(null, vars, null, null , null);
if (pkgResults == DTSExecResult.Success)
lblerror.Text = "Package executed";
else
lblerror.Text = "Package failed";

包执行失败并出现错误(从 SSIS 记录到文本文件):

Diagnostic,M02697,IIS APPPOOL\ASP.NET v4.0,Excel Connection Manager,{8EECAC3E-7A77-43E8-AD03-B734D273E489},{2AC52183-188B-4B82-BB67-D5112FE08710},20/06/2014 17:16:40,20/06/2014 17:16:40,0,0x,ExternalRequest_post: 'IDBInitialize::Initialize failed'. The external request has completed.
OnError,M02697,IIS APPPOOL\ASP.NET v4.0,Data Flow Task,{F2934EFE-11E9-4A70-80D6-EB7143A07745},{2AC52183-188B-4B82-BB67-D5112FE08710},20/06/2014 17:16:40,20/06/2014 17:16:40,-1071611876,0x,SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.  The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0202009.  There may be error messages posted before this with more information on why the AcquireConnection method call failed.

OnError,M02697,IIS APPPOOL\ASP.NET v4.0,ExcelDataInput,{FCEC3902-379C-4D69-9135-0246FC60AEAE},{2AC52183-188B-4B82-BB67-D5112FE08710},20/06/2014 17:16:40,20/06/2014 17:16:40,-1071611876,0x,SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.  The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0202009.  There may be error messages posted before this with more information on why the AcquireConnection method call failed.

OnError,M02697,IIS APPPOOL\ASP.NET v4.0,Data Flow Task,{F2934EFE-11E9-4A70-80D6-EB7143A07745},{2AC52183-188B-4B82-BB67-D5112FE08710},20/06/2014 17:16:40,20/06/2014 17:16:40,-1073450985,0x,component "Excel Source" (307) failed validation and returned error code 0xC020801C.

我已尝试授予 IIS_USERS、SQL dts 和代理用户对 excel 文件、SQL 临时目录和文件(读取和写入)的访问权限,并且该 excel 文件没有被任何其他进程锁定。我正在运行 Windows 7 32 位,并且 Run64BitRuntime 设置为 False。

现在,我已经尝试了 Windows 身份验证和 SQL 身份验证(选中复选框以保存密码和保护级别设置为 EncryptSensitiveWithUserKey)。 BIDS 可以正常运行包,但在我的 Web 应用程序调用时失败并出现相同的错误。

【问题讨论】:

  • IIS APPPOOL 运行在什么账户下?本地 Windows 服务帐户还是实际的域帐户?您正在访问的 Excel 文件是在本地机器上还是在其他地方?如果是本地的,IIS 应用程序池帐户是否对文件所在的文件夹具有读取权限?如果是网络位置,您使用的是 UNC 还是映射驱动器? (UNC 不那么挑剔)。如果您将 Excel 文件弹出到网站内的某个位置,例如 App_Data。在那里工作?如果你把你的核心逻辑放在那里,把它放到一个命令行应用程序中并像你自己一样执行,我怀疑它可以工作,是吗?斯兰
  • 您是否在连接字符串中指定提供程序,例如 - "Provider=SQLNCLI10;Data Source=xxxx;Initial Catalog=xxxxx;Integrated Security=SSPI;"

标签: c# excel ssis sql-server-2008-r2 bids


【解决方案1】:

感谢 billinkc 指出缺失的链接。 我将我的应用程序池的身份更改为本地系统,它就像一个魅力。

http://i.imgur.com/yUq6nen.jpg

感谢 Vikramsinh Shinde 的宝贵时间和建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2017-06-16
    相关资源
    最近更新 更多