摘要: A" master"数据库包含一组连接字符串。 .dtsConfig
XML文件用于将包指向此数据库。通过在连接上使用包变量和表达式来完成动态连接分配。在开发环境中完美运行,但一旦部署到现场,它就会失败。
我在将.dtsx
软件包部署到生产环境时遇到了问题。该问题与作业运行时的连接管理器有关。历史记录日志报告... network ...
错误,并显示Login timeout
错误。
(供参考,我使用Visual Studio 2013和SQL Server数据工具)
我在master数据库中有一个表,它包含了需要处理的连接字符串。
包检查配置文件,按照(1)的规定将它们指向数据库。
检索连接并将其放在对象变量中。
变量映射到foreach
循环容器,其中一组连接字符串变量映射到相关列。
然后包正常进行。
一些注意事项:
当我进行开发时,我在网络上为连接字符串提供了默认值。
我检查了数据库中的连接字符串参数和格式,它们符合Microsoft的规范。
我们的实施者在客户端的QA服务器上安装了SSDT,我在其中更改了连接变量以指向其网络。这解决了这个问题,但它不可持续(至少在我看来)。
所以我的问题是:如何让我的生产部署在动态连接管理分配中正常工作,而不必在每个客户端的基础上更改每个包内的连接字符串变量?
任何帮助将不胜感激。
答案 0 :(得分:0)
在通过向DuckDuckGo提出大量问题进行更多研究后,我终于得到了答案here。
以上博客引用:
我使用上面列出的第三个选项为我的客户端运行了一组SSIS包。这些包装很好地工作了很长时间,直到他们失败的一天。日志显示软件包验证失败,我发现所有软件包的连接管理器的 DelayValidation 属性设置为 False 。用于设置连接字符串的变量具有指向DEV服务器的默认值。生产中的这些包实际上是试图验证DEV数据库,尽管连接字符串是通过变量动态设置指向PROD的。这很危险,因为如果DEV服务器关闭,作业将无法运行,这正是发生的情况。