Как ИЗМЕНИТЬ .... ПРОВЕРИТЬ ПРОВЕРЬТЕ С помощью PowerShell и SMO - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть скрипт 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) "
           }
        }
}

1 Ответ

0 голосов
/ 02 апреля 2019

Мне не кажется, что SMO предлагает метод для объектов ограничений foreignkey / default.Вам, вероятно, нужно будет что-то сделать с вызовом sql, используя Dbcc CheckConstraint.Делать что-то программно, хотя немного скучно

Когда я сталкиваюсь с таким камнем преткновения, я склоняюсь к большой работе, которую люди dbatools делают для помощи.

Предполагая, что вы не хотите использовать весь модуль dbatools, вы обычно можете получить команду, сгенерированную из их установленных модулей.Я считаю, что их тяжелая работа с результатами вывода команды является наиболее полезной.

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

Посмотрите на код GitHub для этой логики - это поможет предположить, что вы хотите собирать / выводить результаты вызова DbccCheckConstraint.

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

...