将 SQL SSIS 作业的服务器名称传递给包变量

Passing SQL Server Name of SSIS Job to package variable

我正在尝试找出一种方法,我可以将 SQL SSIS 作业的服务器名称 运行 传递给包中​​的变量。

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

一直在看包配置的文档,感觉应该是在环境变量部分。但是,我认为列出的任何 "environment variables" 都不是服务器名称。我用 Google 搜索了这个问题,并在 Whosebug 上搜索了问题,但我似乎找不到这个问题。

可能有几种不同的方法,但我认为您可以通过简单的执行 SQL 任务来完成。

  1. 创建一个新的执行SQL任务

  2. 在常规 -> SQL 语句下,在 "SQLStatement" 字段中输入您的查询 Select @@SERVERNAME as ServerName

  3. 在常规 -> 结果集下,选择 "Single row"

  4. 在Parameter Mapping下,在Variable Name中输入你的变量(如果没有就创建一个)User::ServerName,"Input"作为direction,0作为Parameter Name,和 -1 作为参数大小

  5. 在“结果集”下,输入“结果名称”"ServerName",然后在“变量名称”中键入变量

  6. 点击确定

试一试,看看它是否能满足您的需求。

我能够通过使用脚本任务和 C# 代码来获取机器名称或机器的 IP 地址来完成此操作运行。

Dts.Variables["User::ServerName"].值=System.Net.Dns.GetHostName();