Sql server 将SSIS作业的SQL Server名称传递给包变量

Sql server 将SSIS作业的SQL Server名称传递给包变量,sql-server,configuration,ssis,package,Sql Server,Configuration,Ssis,Package,我正在试图找到一种方法,将运行SSIS作业的SQL服务器名称传递给包中的变量 基本上,此作业运行在哪个服务器上,都将通过包中的Ole DB连接传递给ServerName属性,以便将数据加载到该服务器中 我一直在看关于包配置的文档,我觉得它应该在环境变量部分。但是,我不认为列出的任何环境变量都是服务器名称。我在谷歌上搜索了这个问题,并在StackOverflow上搜索了一些问题,但我似乎找不到这个问题。可能有几种不同的方法,但我认为您可以通过一个简单的执行SQL任务来实现这一点 创建新的执行SQL

我正在试图找到一种方法,将运行SSIS作业的SQL服务器名称传递给包中的变量

基本上,此作业运行在哪个服务器上,都将通过包中的Ole DB连接传递给ServerName属性,以便将数据加载到该服务器中


我一直在看关于包配置的文档,我觉得它应该在环境变量部分。但是,我不认为列出的任何环境变量都是服务器名称。我在谷歌上搜索了这个问题,并在StackOverflow上搜索了一些问题,但我似乎找不到这个问题。

可能有几种不同的方法,但我认为您可以通过一个简单的执行SQL任务来实现这一点

创建新的执行SQL任务

在“常规->SQL语句”下,在“SQL语句”字段中输入查询并选择@SERVERNAME作为SERVERNAME

在“常规->结果集”下,选择“单行”

在“参数映射”下,输入变量create one,前提是变量名中没有一个User::ServerName,输入作为方向,0作为参数名,以及-1作为参数大小

在结果集下,输入ServerName作为结果名,并在variable Name中键入变量

单击“确定”


试一试,看看它是否实现了你想要的

我可以通过使用脚本任务和C代码获取运行它的机器的名称或IP地址来实现这一点


变量[User::ServerName].Value=System.Net.Dns.GetHostName

您是否试图在不重新配置连接管理器的情况下跨服务器重用包?如果是这样的话,以前这里有人问过这个问题:@rwking,据我所知,这不是我所问问题的解决办法。我不仅仅需要动态设置连接字符串。我特别需要当前作业运行的服务器名。我可以从另一个硬编码的OLEDB源的sql表中传递服务器名。但这不是我想要的。谢谢。那么您想将servername设置为一个包变量吗?这可能就是解决方案,我需要创建包含服务器名称的系统环境变量,但是没有真正的解释如何做到这一点。您能否提供一些关于您最终要实现的目标的详细信息?这无法实现我想要的目标,因为执行SQL任务需要Ole DB连接字符串来执行查询。即使只是查询系统表.Dts.Variables[User::ServerName].Value=system.Net.Dns.GetHostName;这个C函数给了我主机名,通常是服务器名,尽管我认为数据库引擎实例可能不同