【问题标题】:How to ALTER....CHECK CHECK CONSTRAINT using PowerShell and SMO如何 ALTER....CHECK CHECK CONSTRAINT 使用 PowerShell 和 SMO
【发布时间】:2019-04-02 17:19:18
【问题描述】:

我有一个 PowerShell 脚本来检查是否启用并检查了约束。我想添加一个相当于“ALTER.....CHECK CHECK CONSTRAINT”的步骤,但我没有找到任何与此相关的 MS SMO 文档。 如何使用 PowerShell 和 SMO 做到这一点?

这给出了当前约束状态的信息。

[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Smo') | Out-Null
$Srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $SqlServer
$srv.Databases | % { 
    $Database = $_.Name
    $_.Tables | % {
           $_.Checks | % {
            "Database $Database Table $($_.Parent.Name) constraint $($_.Name)`n$($_.Text)  `nIsChecked: $($_.IsChecked) "
           }
        }
}

【问题讨论】:

    标签: powershell smo


    【解决方案1】:

    在我看来,SMO 没有为外键/默认约束对象提供方法。 您可能需要使用 Dbcc CheckConstraint 执行 sql 调用。以编程方式做某事有点无聊。

    当我遇到这样的绊脚石时,我倾向于向 dbatools 人员所做的出色工作寻求帮助。

    假设您不想使用整个 dbatools 模块,您通常可以从已建立的模块中获取正在生成的命令。我发现他们对命令输出结果的辛勤工作是最有帮助的。

    https://docs.dbatools.io/#Invoke-DbaDbDbccCheckConstraint

    查看该逻辑的 github 代码 - 假设您想要收集/输出 DbccCheckConstraint 调用的结果,这将有所帮助。

    https://github.com/sqlcollaborative/dbatools/blob/development/functions/Invoke-DbaDbDbccCheckConstraint.ps1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 2022-12-04
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多