Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 动态连接到部署包的服务器_Sql Server_Ssis_Sql Server Data Tools_Ssis 2008 - Fatal编程技术网

Sql server 动态连接到部署包的服务器

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

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

服务器:live-db01\live db:活动

服务器:dev-db01\livedebug数据库:活动

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

我的问题是,假设该包安装在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;
那应该是你想要的。要使用表达式,请转到连接上的Expressions属性,并使用变量@[User::connection_STRING]覆盖ConnectionString属性,您可能希望为连接启用延迟验证