使用执行包任务时获取连接和奇怪的行为

use*_*795 9 sql-server oledb ado.net ssis

我有一个Master包,我在使用Execute包任务调用几个包.

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

此外,软件包还使用密码加密敏感.

看到奇怪的行为:1.子程序包在从BIDS运行时成功运行但在从具有"获取连接"失败的主程序包运行时失败

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

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

pra*_*een 3

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

检查这篇文章

更新 :-

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

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

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

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

在此输入图像描述

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

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

      Executables->ExecutePackageTask->PackagePassword
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

步骤 2:创建 XML 文件后,将其打开并搜索ConfiguredType=property,然后在配置的值中输入子包的密码

在此输入图像描述

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