0

我有一个需要在不同环境(不同的服务器\实例,相同的数据库名称)中运行的包,例如:

服务器:live-db01\live分贝:Campaign

服务器:dev-db01\livedebug分贝:Campaign

包本身对于每个环境都是相同的。唯一改变的是服务器的连接字符串。这些包被发送到适当的部门,他们将其部署到他们的服务器上。

我的问题是假设该软件包已安装到live-db01集成服务实例上。有没有办法访问包内的这个服务器信息并相应地设置连接字符串?

现在我们用 4 种不同的配置部署同一个包,XML .config 中唯一的区别是连接字符串。有没有一种方法可以在没有配置的情况下部署单个软件包,该配置会根据部署的服务器动态更改其连接字符串?

4

1 回答 1

0

如果您使用变量设置连接字符串的值,则可以使用脚本任务将变量设置为您想要的任何值。

因为脚本任务可以访问 .net 基类,所以您可以检查 System.Environment.MachineName 以获取主机并相应地设置配置。

如果您有一个名为“CONNECTION_STRING”的字符串变量并添加了一个执行以下操作的脚本任务:

 string hostName = System.Environment.MachineName;
        string connectionString = "";
        switch (hostName)
        {
            case "host1":
                connectionString = "SERVER=abc;Initial Catalog=blah;...";
                break;

            case "host2":
                connectionString = "SERVER=abc;Initial Catalog=blah;...";
                break;

            case "host3":
                connectionString = "SERVER=abc;Initial Catalog=blah;...";
                break;


        }
        Dts.Variables["CONNECTION_STRING"].Value = connectionString;

那应该做你想做的事。要使用表达式,请转到连接上的 Expressions 属性并使用变量“@[User::CONNECTION_STRING]”覆盖“ConnectionString”属性,您可能希望为连接启用延迟验证。

于 2015-11-11T09:55:34.057 回答