我有一个 SSIS 包,它执行以下操作: 从服务器表中选择连接字符串。连接字符串或者是服务器的名称以及域(即 Dalin.myhouse.com),或者是服务器的直接 IP。
该包遍历每个连接字符串并填充定义的“全局”变量。此变量是在变量设计器中创建的。对于每个连接字符串,包将检索有关服务器的信息。
我遇到的问题是,当您将服务器 IP 添加到列表时,当时可能不知道“友好名称”,所以我只会在连接字符串列和友好名称列中都有服务器 IP桌子。我想在迭代结束后更新该表中服务器条目的友好名称列,以便使用 SERVERPROPERTY('Servername') 从服务器中提取服务器名称
为此,我想使用带有以下代码的 ExecuteSQL 任务:
UPDATE [myDB].[mySchema].[myServers]
SET [ServerName] = VarA
WHERE ConnectionString = VarB
前面的代码使用到 myServers 表所在的服务器的静态连接。
VarA 表示我要设置的全局值 ServerName 将通过使用 SERVERPROPERTY('Servername') 在单独的 SQLTask 中设置。它需要在一个单独的任务中,因为它必须使用当前迭代正在使用的同一服务器连接到服务器。
VarB 在每次迭代开始时设置为列表中的下一个连接字符串。
我已经看到了有关如何将其用于脚本任务和脚本组件的示例,但我想简单地使用 ExecuteSQL 任务来完成此操作。
总结:
连接ServerA,填写两个全局变量。
连接到 ServerB 并使用两个全局变量来更新表中的特定行。
有任何想法吗?