如果 ServerName 参数化但 ConnectionString 未参数化,则 SSIS 项目验证失败
SSIS Project validation fails if ServerName is parameterized but ConnectionString is not
我有一个包含 50 个左右包的 SSIS 项目。主包以正确的顺序执行子包。
该项目被部署到一个 SSIS 目录,并由一个具有一些控制逻辑和错误处理的存储过程调用执行。
连接管理器使用从 IS 目录中的环境变量设置传入的值进行参数化。连接管理器的 ServerName 和 InitialCatalog 属性是参数化的,但 ConnectionString 不是。
所有包的 DelayValidation 都设置为 False。
到目前为止一切顺利。这已经在开发、测试和生产环境中工作了很长一段时间。
当我部署一个项目的新版本时,我喜欢在 SSMS 中验证该项目,以确保实时环境中的所有数据结构与包预期的数据结构相匹配。
我现在在我的测试环境中验证失败,我认为这是因为在 VS 调试环境中最后更新的 ConnectionString 与测试系统环境变量中指定的 ServerName 和 InitialCatalog 不同步。包中的 ConnectionString 指向与实时相比架构不同的服务器。
所以,我的问题是:
1. ConnectionString 字符串是在 SSMS 驱动的验证期间重建的,还是仅在包执行期间重建的?
2. 如果我在此包上将 DelayValidation 设置为 True,那么当它安装在目录中时,它会在验证期间得到验证还是只在 运行 时间得到验证?
我想我找错人了,我会更深入地研究我的包中引用的数据库的状态。
我的帐户似乎不允许我回答问题:-(
如果其他人可以回答(感谢收到并提供的任何赞成票),则可以关闭该问题。
Connection Manager
属性在单个包得到验证之前得到完全解析。正如@Ferdipux 所说,您可以在执行时看到 属性 值(如果您在 Error Context
报告中过滤 Context Depth = 2
)并且您将看到 ConnectionString
属性 从项目环境变量中设置的 ServerName
和 InitialCatalog
变量正确解析。我认为 SSIS
没有问题,很可能是包中引用的数据库仍然与您的包元数据不同步。
我有一个包含 50 个左右包的 SSIS 项目。主包以正确的顺序执行子包。 该项目被部署到一个 SSIS 目录,并由一个具有一些控制逻辑和错误处理的存储过程调用执行。 连接管理器使用从 IS 目录中的环境变量设置传入的值进行参数化。连接管理器的 ServerName 和 InitialCatalog 属性是参数化的,但 ConnectionString 不是。 所有包的 DelayValidation 都设置为 False。
到目前为止一切顺利。这已经在开发、测试和生产环境中工作了很长一段时间。 当我部署一个项目的新版本时,我喜欢在 SSMS 中验证该项目,以确保实时环境中的所有数据结构与包预期的数据结构相匹配。
我现在在我的测试环境中验证失败,我认为这是因为在 VS 调试环境中最后更新的 ConnectionString 与测试系统环境变量中指定的 ServerName 和 InitialCatalog 不同步。包中的 ConnectionString 指向与实时相比架构不同的服务器。 所以,我的问题是: 1. ConnectionString 字符串是在 SSMS 驱动的验证期间重建的,还是仅在包执行期间重建的? 2. 如果我在此包上将 DelayValidation 设置为 True,那么当它安装在目录中时,它会在验证期间得到验证还是只在 运行 时间得到验证?
我想我找错人了,我会更深入地研究我的包中引用的数据库的状态。
我的帐户似乎不允许我回答问题:-( 如果其他人可以回答(感谢收到并提供的任何赞成票),则可以关闭该问题。
Connection Manager
属性在单个包得到验证之前得到完全解析。正如@Ferdipux 所说,您可以在执行时看到 属性 值(如果您在 Error Context
报告中过滤 Context Depth = 2
)并且您将看到 ConnectionString
属性 从项目环境变量中设置的 ServerName
和 InitialCatalog
变量正确解析。我认为 SSIS
没有问题,很可能是包中引用的数据库仍然与您的包元数据不同步。