ローカルSQL Serverの再起動
# 以下のように実行されます
# ECHO "BASE64STRING==" | .\script.ps1; Clear-History
# 注1: サーバーの停止と再起動にnetコマンドを使用しないでください
# net stop MSSQLSERVER && net start MSSQLSERVER
# sc stop MSSQLSERVER && sc start MSSQLSERVER
# これらのコマンドによって、SQL ServerエージェントサービスとSQL Server Browserサービス
# の依存関係は自動的には開始されません
# 注2: PowerShellのRestart-Serviceコマンドレットはすべての依存関係を処理できますが、Windowsでしか動作しません
# powershell -command "Restart-Service MSSQLSERVER -Force"
# MSSQLSERVERの起動後-コマンドレットは、以前に停止したすべての依存関係を開始します。
# Linuxの場合SQL Serverにはsystemdユニットファイルが付属しており、systemctlを使用して制御できます。
# sudo systemctl restart mssql-server
# sudo systemctl status mssql-server
# 注3: コマンドを管理者として実行していることを確認します
# 必要に応じて、すべてのSQL Server名前付きインスタンスを再起動してください
# クラスタで実行している場合、SQL Serverデータベースエンジンサービスは
# Cluster Administratorを使用して管理するのが最適です
begin {}
process {
# エラーの場合は停止します。これを設定しない場合、結果値はTrueとなり
# 問題がないと見なされます。
$ErrorActionPreference = "Stop"
# パイプラインオブジェクトごとに1回実行
$JSON = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($_))
$Params=($JSON | ConvertFrom-Json)
Write-Output "providerRecordUid=$($Params.providerRecordUid)"
Write-Output "resourceRecordUid=$($Params.resourceRecordUid)"
Write-Output "userRecordUid=$($Params.userRecordUid)"
Write-Output "newPassword=$($Params.newPassword)"
Write-Output "oldPassword=$($Params.oldPassword)"
Write-Output "user=$($Params.user)"
# 再起動されるSQL Serverインスタンス (リスト順)
[string[]]$Instances = 'MSSQLSERVER', 'MSSQL$instance1', 'MSSQL$instance2'
# ローカルマシンでサービスを再起動
foreach ($Instance in $Instances) {
$service = Get-Service $Instance
if ($service.Status -eq 'Running') {
Restart-Service $Instance -Force
} else {
Write-Warning "Restart skipped - service $Instance not running, status: $($service.Status)"
}
}
}
end {}
最終更新