我有一个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) "
}
}
}
答案 0 :(得分:0)
在我看来SMO没有为外键/默认约束对象提供方法。 您可能需要使用Dbcc CheckConstraint对sql调用进行某些操作。尽管以编程方式做某事有点无聊。
当我遇到这样的绊脚石时,我倾向于寻找dbatools人们正在寻求帮助的出色工作。
假设您不想使用整个dbatools模块,通常可以从已建立的模块中获取正在生成的命令。我发现他们对命令输出结果的辛勤工作最有帮助。
https://docs.dbatools.io/#Invoke-DbaDbDbccCheckConstraint
查看该逻辑的github代码-假设您要收集/输出DbccCheckConstraint调用的结果将对您有帮助。