动态连接到部署包的服务器
Dynamically connect to the server a package is deployed on
我有一个包需要在不同的环境下运行(不同的server\instance,相同的数据库名称)例如:
服务器:live-db01\live
数据库:Campaign
服务器:dev-db01\livedebug
数据库:Campaign
包本身对于每个环境都是相同的。唯一改变的是服务器的连接字符串。这些包被发送到适当的部门,他们将其部署到他们的服务器上。
我的问题是假设包安装在 live-db01
Integration Services 实例上。有没有办法访问包内的服务器信息并相应地设置连接字符串?
现在我们使用 4 种不同的配置部署同一个包,XML.config 的唯一区别是连接字符串。有没有一种方法可以在没有配置的情况下部署单个包,该配置会根据部署的服务器动态更改其连接字符串?
如果您使用变量设置连接字符串的值,您可以使用脚本任务将变量设置为您想要的任何值。
因为脚本任务可以访问 .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;
那应该做你想做的。要使用表达式,请转到连接上的表达式 属性 并使用变量“@[User::CONNECTION_STRING]”覆盖 "ConnectionString" 属性,您可能想要为连接启用延迟验证。
我有一个包需要在不同的环境下运行(不同的server\instance,相同的数据库名称)例如:
服务器:live-db01\live
数据库:Campaign
服务器:dev-db01\livedebug
数据库:Campaign
包本身对于每个环境都是相同的。唯一改变的是服务器的连接字符串。这些包被发送到适当的部门,他们将其部署到他们的服务器上。
我的问题是假设包安装在 live-db01
Integration Services 实例上。有没有办法访问包内的服务器信息并相应地设置连接字符串?
现在我们使用 4 种不同的配置部署同一个包,XML.config 的唯一区别是连接字符串。有没有一种方法可以在没有配置的情况下部署单个包,该配置会根据部署的服务器动态更改其连接字符串?
如果您使用变量设置连接字符串的值,您可以使用脚本任务将变量设置为您想要的任何值。
因为脚本任务可以访问 .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;
那应该做你想做的。要使用表达式,请转到连接上的表达式 属性 并使用变量“@[User::CONNECTION_STRING]”覆盖 "ConnectionString" 属性,您可能想要为连接启用延迟验证。