2010-04-23 62 views
2

我们最近已将SQL Server 2000中的30个DTS包迁移到SQL Server 2008中的SSIS包中。我们创建了包,以便所有与环境相关的变量和其他所需信息均被采集来自配置文件,用于维护Dev,QA和Prod等不同环境下的软件包。SSIS包无法正确获取配置文件

使用配置文件设置所有包后,当我们测试Business Intelligence Development Studio的包时,它工作正常,并从配置文件中获取值。当将配置文件中的值更改为Dev或其他env时,它会正确拾取值并执行。同样,尝试2种不同的环境,并且软件包工作正常。所以我们部署到Prod,它工作正常。

昨天,我不得不对一个软件包进行功能更改,因此我在软件包中进行了更改(它只是更改SQL过程执行任务中的参数,而不涉及任何变量),并在BIDS中进行了测试2环境,它工作得很好。由于该变更与任何环境变化无关,因此我们仅在Prod(即不使用清单)中手动部署更新的软件包(而不是相关的配置文件)。之前在程序包中使用并且在Prod中正常工作的配置文件保持不变。但是当程序包被执行时,程序包指向QA,而且我相信程序包没有从配置文件中读取。

一个原因可能是,它仍然使用最后执行的值,它们保留在.dtsx文件中(通过在文本编辑器中打开该文件可以进行检查)。但通常情况下,执行包时,值将从配置文件覆盖。猜猜这没有发生。

这有什么可能的原因?我们已经在测试环境之间进行了广泛的切换测试,并没有显示出这种行为。我们现在已经在Prod环境中遇到了这个两次。任何人都经历过这个,你是如何解决这个问题的?

回答

1

我们终于希望找到解决此问题的解决方法。在测试环境中运行包并对其进行测试后,我们将其指向Prod环境,并添加一个虚拟条件以使其在第一个任务中失败,然后执行包。通过这样做,存储在.dtsx文件中的变量值将使用配置文件中的Prod值进行刷新。然后我们创建清单并部署它。但要记得去除强制失败第一项任务的虚拟条件。它现在正在工作。我会更新,如果我找到这个问题的实际解决方案。

0

检查prod上的环境变量,也许有人改变它的测试东西,忘了改回来?

0

如何运行包?

我发现的作品是创建SQL代理作业并在步骤属性中指定所需的配置文件。每个环境最终都会有一个作业,其配置文件路径不同。