gpt4 book ai didi

ssis - 更改多个 SSIS 包的 DelayValidation

转载 作者:行者123 更新时间:2023-12-02 01:57:12 27 4
gpt4 key购买 nike

我在 SSIS 2012 中有一个包含大约 150 个包的项目。其中一个是入口点,其余的在主线下的某个地方被调用。如果不存在,他们每个人都会在目标中创建自己的表。我发现我需要将 DelayValidation 设置为 True 才能正常工作,但我讨厌这样做 150 次。有没有办法让这个属性传播或除了更改所有包之外的任何东西?

最佳答案

您可以使用 .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)
}
}

注意事项

  • 切勿在未测试您是否具有版本控制的情况下运行自动化代码。
  • 这只会更改包的延迟验证。每个容器和任务都有自己的可能需要更新的 DelayValidation 属性

2017+笔记

一位用户指出

SaveToXml function needs 3 parameter in SQL Server 2017.

这将使这个 SaveToXml 看起来像

$app.SaveToXml($current, $package, $null)

Documentation表明自 2016 年以来一直如此。

他们进一步指出,

As a Developer without installing SQL Server like me, need located your Microsoft.SQLServer.ManagedDTS.dll file explicitly

这会将第一行的 LoadWithPartialName 替换为具有显式路径的 LoadFile,如

 ([Reflection.Assembly]::LoadFile("C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\SSIS\140\Binn\Microsoft.SqlServer.ManagedDTS.dll") | Out-Null)

请注意,具体路径会因您安装的工具而异。我倾向于使用 dir/s/b(目录、搜索子文件夹、裸格式)命令来查找内容,所以

C:\>cd "\Program Files (x86)"
C:\Program Files (x86)>dir /s /b Microsoft.SqlServer.ManagedDTS.dll

C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\Binn\Microsoft.SqlServer.ManagedDTS.dll
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies\SSIS\150\Microsoft.SqlServer.ManagedDTS.dll

在这里我们可以看到我有两个 ManagedDTS.dll,它们都用于 SQL Server 的 150(2019?)版本

关于ssis - 更改多个 SSIS 包的 DelayValidation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com