gpt4 book ai didi

未找到 SSIS 2012 用户变量

转载 作者:行者123 更新时间:2023-12-04 14:35:00 26 4
gpt4 key购买 nike

我对发帖犹豫不决,因为我觉得我遗漏了一些简单的东西,但在阅读了大量文章之后,我需要另一双眼睛,因为我的眼睛已经呆滞了。

SSIS 2012 解决方案。

目标:将数据从 47 个 MS Access 数据库导入相应的 SQL Server 数据库。这意味着 47 个包。我想避免使用 47 组不同的连接管理器,并在项目级别参数化有意义的内容,以便可以轻松配置通用数据。

  • 我添加了项目级参数来保存 SQL Server、SQL 用户名、SQL 密码和访问数据库的路径。这些将被映射到环境中,以允许轻松更改目标 SQL Server 以及 Access 数据库的源目录。

  • 我添加了两个项目级 OLEDB 连接管理器 - 一个用于 SQL 2012 (NativeClient 11.0),一个用于 Access (MSJET 4.0)(它们是 access 2000 数据库)。它们被设置为使用初始数据库配置,我希望它会被各个包覆盖。

  • 对于每个包,我想指定正在使用的数据库,因此我创建了一个包变量(SQLDatabase 和 AccessDatabase)

在连接管理器中,我添加表达式以包含包变量 - 例如对于 SQL 连接管理器上的 InitialCatalog = @[User::SQLDatabase] 和 Access CM 中的 ServerName 结合了项目路径 + @[User::AccessDatabase]

什么有效:

  • 我可以更新包变量值并看到它们反射(reflect)在连接管理器的属性中。
  • 我可以进入数据流并添加一个 OLE DB 源,选择 SQL 连接管理器,然后成功地从该数据库接收到一个表列表。

什么失败了:

当我在选择表格后单击“预览”或“列”时,出现一个大错误:

“Package1 错误:变量‘User::SQLDatabase’未在变量集合中找到。该变量可能不存在于正确的范围内。”

针对该错误单击“确定”后,“预览”或“列”窗口将显示,不会出现其他问题。

但是,在 OLE DB 源代码编辑器上单击“确定”后,框上有一个红色的大 X,表示与上述相同的错误。

我的困惑:

如果我打开包的变量,变量就在那里,作用域为 Package1。如果我更新它的值并保存,连接管理器会相应地更新自身,因此表达式映射似乎没问题。

好像这只是部分工作,我不确定标志在哪里才能使其余部分工作,或者我的配置在哪里失败。你能不能在项目级CM中设置一个表达式来使用包级变量?如果是这种情况,我不知道如何正确设置它以避免包级 CM。

感谢任何帮助。如果我在某个地方是个白痴,请温柔点。

最佳答案

如果连接管理器处于项目级别,则您不能使用包级别变量来设置它们的值。如果您转到 Initial Catalog 的表达式构建器,那么您会看到只有您的项目级变量可用。因此,您可以使用您的项目级别变量来设置它。如果你真的想使用包级变量,那么你需要为每个包创建一个连接管理器,这会很痛苦。

关于未找到 SSIS 2012 用户变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23314385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com