识别 SSIS 包中的链接服务器

To identify linked server in SSIS package

我有大约 500 个 SSIS 包。我想获取使用 linked 服务器的 SSIS 包列表。我们必须得到这个的原因是我们现在要删除 linked 服务器。我不想打开每个 SSIS 包并检查所有任务以查看 link 服务器是否可用。

我们有什么办法可以做到这一点吗?

这不是真正的答案,但它太长了,无法发表评论。您可以简单地搜索 SSIS 包中的给定文本。这些只不过是 xml 个文件。

您可以使用 f.ex。 PowerShell:

Get-ChildItem -recurse | Select-String -pattern "YOUR_LINKED_SERVER" | group path | select name

这至少会为您提供带有链接服务器的包列表。然后根据您链接服务器的位置,您可能需要:

  1. 如果是 SQL 个字符串,只需将其名称替换为空字符串(PowerShell 或其他)
  2. 如果在其他组件中,您可能需要查看 Microsoft.SqlServer.Dts.Runtime 名称 space 并编写 PowerShell 脚本或 .NET 应用程序并根据代码更改文件。

如果您不想使用 powershell,我会使用一种名为 FnR.EXE 的东西,您可以 google 并下载它。同样,您只需搜索 XML,它只是一个文本文件。如果您知道链接服务器的名称,那很好。如果您不知道链接服务器的名称,则必须搜索 %.%.%.% 形式的内容。知道所有链接的服务器名称会更可靠(解决这个问题应该比浏览所有包更快)

您还需要考虑您的包是否使用了一个视图,而该视图又引用了一个链接服务器。那么链接的服务器名称实际上不会出现在包中。