Sql server 动态连接到部署包的服务器
我有一个包需要在不同的环境中运行不同的服务器\实例,相同的数据库名称,例如: 服务器:live-db01\live db:活动 服务器:dev-db01\livedebug数据库:活动 包本身对于每个环境都是相同的。唯一需要更改的是服务器的连接字符串。这些包被发送到适当的部门,并部署到服务器上 我的问题是,假设该包安装在live-db01 Integration Services实例上。是否有方法访问包中的此服务器信息并相应地设置连接字符串Sql server 动态连接到部署包的服务器,sql-server,ssis,sql-server-data-tools,ssis-2008,Sql Server,Ssis,Sql Server Data Tools,Ssis 2008,我有一个包需要在不同的环境中运行不同的服务器\实例,相同的数据库名称,例如: 服务器:live-db01\live db:活动 服务器:dev-db01\livedebug数据库:活动 包本身对于每个环境都是相同的。唯一需要更改的是服务器的连接字符串。这些包被发送到适当的部门,并部署到服务器上 我的问题是,假设该包安装在live-db01 Integration Services实例上。是否有方法访问包中的此服务器信息并相应地设置连接字符串 现在,我们使用4种不同的配置部署同一个包,XML.co
现在,我们使用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;
那应该是你想要的。要使用表达式,请转到连接上的Expressions属性,并使用变量@[User::connection_STRING]覆盖ConnectionString属性,您可能希望为连接启用延迟验证