3

在处理包含多个包的大型 SSIS 项目时,这些包可能会开始变得有点混乱,其中包含已创建但从未使用过或因其他更改而变得多余的变量。我需要一些可以扫描几个 SSIS 包并列出所有未使用变量的东西。

4

2 回答 2

4

我已经设法通过使用一些 Powershell 来回答我自己的问题。下面的脚本使用 xpath 来获取变量名,然后使用正则表达式来查找出现次数,如果它出现一次,那一定是因为它已定义但从未使用过。

唯一需要注意的是,如果您使用的变量名称是 dtsx 文件中自然存在的单词,那么脚本将不会选择它们。我可能需要扩展我的脚本,只对包中的特定节点进行正则表达式搜索。

$results = @()
Get-ChildItem -Filter *.dtsx |
% {
    $xml = [xml](Get-Content $_)
    $Package = $_.Name
    $ns = [System.Xml.XmlNamespaceManager]($xml.NameTable)
    $ns.AddNamespace("DTS", "www.microsoft.com/SqlServer/Dts")
    $var_list = @($xml.SelectNodes("//DTS:Variable/DTS:Property[@DTS:Name = 'ObjectName']", $ns) | % {$_.'#text'})
    $var_list | ? {@([Regex]::Matches($xml.InnerXml, "\b$($_)\b")).Count -eq 1} | 
    % { $results += New-Object PSObject -Property @{
         Package = $Package
            Name = $_}
    }
}
$results
于 2013-01-30T09:23:43.080 回答
0

这是一个很好的问题,因为我对一些相当大的 SSIS 包也有同样的担忧。不幸的是,在 SSIS 包之外,没有任何可用的功能可以提供此功能。请参阅附加链接中的讨论:

CodePlex

但是通过打开 SSIS 包,您可以通过应用以下链接中概述的步骤来确定变量的使用情况:

使用 bi-xpress 查找 ssis 变量依赖项

希望这可以帮助。

于 2013-01-29T22:54:52.620 回答