Power Shell Script для включения уровня сервера и триггеров баз данных - PullRequest
0 голосов
/ 15 января 2020

Каков наилучший способ включить все триггеры уровня сервера и уровня базы данных для нескольких серверов? Спасибо

1 Ответ

1 голос
/ 15 января 2020

Использование модуля Powershell SQLSERVER:

- Запустите приведенную ниже команду для установки модуля оболочки питания sqlserver

# install-module sqlserver
Import-Module sqlserver

# getting the servers list
$servers = Get-Content C:\sql\servers.txt

Foreach($server in $servers)
{

 cd sqlserver:/sql/$server

 # checking if a server has more than one instance
 IF ((dir).count -gt 1)
  {

 cd sqlserver:\sql\$server

 dir | %{ $instname = $_.displayname

            "***************************************$server $instname*************************************************"
            "Enabling Server Level Triggers on: $server\$instname"

            cd sqlserver:\sql\$server\$instname\triggers

            dir | %{$_.refresh()}

            # enabling server level triggers
            dir | ?{$_.isenabled -eq $false} | %{$_.isenabled = $true ; $_.alter() ; $_.refresh()}


            cd sqlserver:\sql\$server\$instname\databases

            # looping through the databases on each instance and enabling the triggers
            dir | %{ $DB = $_.name
                      cd sqlserver:\sql\$server\$instname\databases\$DB\Triggers

                      "Enabling Triggers on: $DB"
                      dir | %{$_.refresh()}
                      #$server

                      dir | ?{$_.isenabled -eq $false} | %{$_.isenabled = $true ; $_.alter() ; $_.refresh()}
                    }

         }
  }
  else # for servers with default instance 
  {
     cd sqlserver:\sql\$server\default

     cd sqlserver:\sql\$server\default\triggers
            "***************************************$server*************************************************"
            "Enabling Server Level Triggers on: $server\Default"

            dir | %{$_.refresh()}

            # enabling server level triggers
            dir | ?{$_.isenabled -eq $false} | %{$_.isenabled = $true ; $_.alter() ; $_.refresh()}


            cd sqlserver:\sql\$server\default\databases
            # looping through the databases on each instance and enabling the triggers
            dir | %{ $DB = $_.name
                      cd sqlserver:\sql\$server\default\databases\$DB\Triggers

                      "Enabling Triggers on: $DB"
                      dir | %{$_.refresh()}
                      #$server

                      dir | ?{$_.isenabled -eq $false} | %{$_.isenabled = $true ; $_.alter() ; $_.refresh()}
                    }


   }
}

Write-Host "Done....."

cd c:\

Start-Sleep -s 10
...