更改多个SSIS包上的DelayValidation

时间:2013-10-14 18:43:02

标签: ssis

我在SSIS 2012中有一个包含大约150个软件包的项目。其中一个是入口点,其余的被称为主要的下线。如果不存在,则每个表都在目标中创建自己的表。我发现我需要将DelayValidation设置为True才能使其工作,但不喜欢这样做150次。有没有办法让这个属性传播或除了对所有包进行更改之外的任何其他内容?

3 个答案:

答案 0 :(得分:2)

您可以使用.NET库进行此更改。下面是一个PowerShell脚本,它查看给定文件夹中的所有包。如果DelayValidation属性为false,则会将其更改为True并保存包。

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SQLServer.ManagedDTS") | Out-Null
$folder = "C:\sandbox\StackOverflow\StackOverflow\obj\Development"

$app = New-Object Microsoft.SqlServer.Dts.Runtime.Application

foreach($current in (Get-ChildItem $folder -Filter "*.dtsx").FullName)
{
    Write-Host $current

    $package = $app.LoadPackage($current, $null)
    if ($package.DelayValidation -eq $false)
    {
        $package.DelayValidation = $true
        $app.SaveToXml($package, $null)
    }
}

注意事项

  • 如果没有测试您是否拥有版本控制,请不要运行自动代码。
  • 这只会更改Package的DelayValidation。每个Container和Task都有自己的DelayValidation属性,可能需要更新

答案 1 :(得分:0)

我找到了更快捷的方法,即在每个包的代码中找到DelayValidation">0<并替换为DelayValidation">-1<。它比逐项逐项更新并更改属性更快,但您仍然必须为每个包执行此操作。

答案 2 :(得分:0)

将DelayValidation“> 0设置为DelayValidation”>-1在SSIS 2008和SSIS 2008 R2中有效,但在SSIS 2012中不存在。默认情况下,SSIS 2012中的组件没有该项-DTS:DelayValidation 。将组件的DelayValidation设置为True后,将添加以下内容-DTS:DelayValidation =“ True”。我正在使用Visual Studio Ultimate 2012。