SQL Server 2014,SSDT:部署.dtsx软件包以实现连接管理器的问题&变量

时间:2016-11-22 09:52:42

标签: sql-server ssis sql-server-2014 sql-server-data-tools dts

摘要: A" master"数据库包含一组连接字符串。 .dtsConfig XML文件用于将包指向此数据库。通过在连接上使用包变量和表达式来完成动态连接分配。在开发环境中完美运行,但一旦部署到现场,它就会失败。

我在将.dtsx软件包部署到生产环境时遇到了问题。该问题与作业运行时的连接管理器有关。历史记录日志报告... network ...错误,并显示Login timeout错误。

(供参考,我使用Visual Studio 2013和SQL Server数据工具)

  1. 我在master数据库中有一个表,它包含了需要处理的连接字符串。

  2. 包检查配置文件,按照(1)的规定将它们指向数据库。

  3. 检索连接并将其放在对象变量中。

  4. 变量映射到foreach循环容器,其中一组连接字符串变量映射到相关列。

  5. 然后包正常进行。

  6. 一些注意事项:

    1. 当我进行开发时,我在网络上为连接字符串提供了默认值。

    2. 我检查了数据库中的连接字符串参数和格式,它们符合Microsoft的规范。

    3. 我们的实施者在客户端的QA服务器上安装了SSDT,我在其中更改了连接变量以指向其网络。这解决了这个问题,但它不可持续(至少在我看来)。

    4. 所以我的问题是:如何让我的生产部署在动态连接管理分配中正常工作,而不必在每个客户端的基础上更改每个包内的连接字符串变量?

      任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在通过向DuckDuckGo提出大量问题进行更多研究后,我终于得到了答案here

以上博客引用:

  

我使用上面列出的第三个选项为我的客户端运行了一组SSIS包。这些包装很好地工作了很长时间,直到他们失败的一天。日志显示软件包验证失败,我发现所有软件包的连接管理器的 DelayValidation 属性设置为 False 。用于设置连接字符串的变量具有指向DEV服务器的默认值。生产中的这些包实际上是试图验证DEV数据库,尽管连接字符串是通过变量动态设置指向PROD的。这很危险,因为如果DEV服务器关闭,作业将无法运行,这正是发生的情况。