簡體   English   中英

用於啟用服務器級別和數據庫觸發器的 Power shell 腳本

[英]Power shell Script to Enable Server level and databases triggers

為多個服務器啟用所有服務器級別和數據庫級別觸發器的最佳方法是什么? 謝謝

使用 Powershell SQLSERVER 模塊:

-- 運行下面的命令來安裝 sqlserver power shell 模塊

# 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM