9

我有一个主包,其中我正在使用执行包任务调用几个包。

子包和主包都没有任何配置,并且在连接管理器中使用硬编码的 SQL 身份验证连接来连接 OLEDB (SQL Server)。

包也有加密敏感密码。

看到的奇怪行为:1.子包从 BIDS 运行时成功运行,但从主包运行时失败,获取连接失败

“对连接管理器的 AcquireConnection 方法调用失败,错误代码为 0xC0202009”

有人可以帮助解决这个问题吗?

4

2 回答 2

3

似乎您的子包没有从父包中获取连接字符串。您需要将连接字符串从父包传递给子包。

检查这篇文章

更新 :-

当您将EncryptSensitiveWithPassword作为子包和父包的访问控制时,然后在从父包执行子 pkg 时

在执行过程中,系统会提示您输入子包的密码。

可能存在即使在运行时输入密码后子 pkg 执行由于获取连接错误而失败的情况。这可能会发生(我不确定)由于子连接字符串(在执行包任务中)可能仍然指向修改后未重建的旧子包。

我的建议是当您将 aExecute SQL Task拖到控制流上时,使用文件 System Location 并指向放置在 bin 文件夹(或您的部署路径)中的更新的子包并在任务中输入子包的密码

在此处输入图像描述

为了从集成服务 (MSDB) 运行父包,您需要了解在运行时执行时如何传递子解密密钥。

编辑: 第 1 步:为父 SSIS 包创建包配置。Execute Package Task有一个属性PackagePassword。您需要在创建配置文件时选择此属性

      Executables->ExecutePackageTask->PackagePassword

在此处输入图像描述

第 2 步:创建 XML 文件后打开它并搜索 ConfiguredType=property 并在配置的值中输入您的子包的密码

在此处输入图像描述

第三步:在MSDB中导入父包后,在配置选项卡中选择配置文件 在此处输入图像描述

于 2012-08-12T04:30:24.233 回答
1

64/32 位错误?您是否有 excel 连接管理器作为来源?

Dtexec 具有 64 位和 32 位应用程序。我假设当您从 BIDS 运行时,它使用 32 位 dtexec,您如何运行主服务器?如果您双击它,这可能是问题所在,因为 DTExecUI(执行包实用程序)仅可作为 32 位应用程序使用。如果您在 64 位服务器上工作并通过 DTExecUI 运行包,则该包将以 32 位仿真模式运行。此外,如果使用的连接管理器不兼容 32 位,则包可能会失败。

请务必注意,如果您在 32 位环境中开发包并希望在 64 位环境中运行该包,则连接管理器需要兼容 64 位。某些连接管理器(例如 Excel)只能在 32 位环境中工作。

编辑:尝试在这里设置密码: 在此处输入图像描述

于 2012-08-13T13:55:23.887 回答