SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

PowerShell で可用性グループの情報を取得した場合のリフレッシュについて

2 comments

SQL Server の PowerShell では、SQL Server の PS プロバイダー経由で可用性グループの情報を取得することができます。
AlwaysOn ポリシーを使用した可用性グループの正常性の確認 (SQL Server)
SQL Server PowerShell プロバイダー
Microsoft.SqlServer.Management.Smo 名前空間 

具体的には以下のようなコマンドで可用性グループの情報を取得できます。

Import-Module SQLPS -DisableNameChecking

Get-ChildItem SQLSERVER:\SQL\$($ENV:COMPUTERNAME)\DEFAULT\AvailabilityGroups\AlwaysOn-AG\AvailabilityReplicas

image

PS プロバイダー経由で情報を取得した場合の注意点として、一度情報を取得した場合、取得された情報がキャッシュされているという点があります。

先ほど、PowerShell を実行した環境では、SQL-01 がプライマリとなっていることが確認できます。

この状態で SQL-02 にフェールオーバーをしてみます。

image

フェールオーバー後に先ほどの PowerShell のウィンドウで再度情報を取得してみます。

image

フェールオーバーを実施した後も先ほどと情報が変わっていないですね。

Get-ChildItem を実行した場合、SQL Server に対してクエリを実行して情報を取得しているのですが、2 回目の実行時にはクエリは実行されていません。

一度ウィンドウを閉じてコマンドレットを実行すると最新の情報となりますが、一度実行したセッションでは、初回実行時の結果がキャッシュされておりその情報が出力されます。

最新の情報を取得する場合には明示的にリフレッシュする必要があります。

AvailabilityGroup メソッド

先ほどのコマンドの場合は以下のように実行します。

Import-Module SQLPS -DisableNameChecking

(Get-ChildItem SQLSERVER:\SQL\$($ENV:COMPUTERNAME)\DEFAULT\AvailabilityGroups\AlwaysOn-AG\AvailabilityReplicas).Refresh()
Get-ChildItem SQLSERVER:\SQL\$($ENV:COMPUTERNAME)\DEFAULT\AvailabilityGroups\AlwaysOn-AG\AvailabilityReplicas

 

image

リフレッシュしたことで、最新の情報に更新され Role が「Secondary」に変更されていることが確認できますね。


PowerShell を実行したノードがプライマリロールの場合に処理を実行する場合は以下のように記述できます。

Import-Module SQLPS -DisableNameChecking

(Get-ChildItem SQLSERVER:\SQL\$($ENV:COMPUTERNAME)\DEFAULT\AvailabilityGroups\AlwaysOn-AG\AvailabilityReplicas).Refresh()
$MyRole = Get-ChildItem SQLSERVER:\SQL\$($ENV:COMPUTERNAME)\DEFAULT\AvailabilityGroups\AlwaysOn-AG\AvailabilityReplicas | ? Name -eq $ENV:COMPUTERNAME
if ($MyRole.role -eq "Primary"){
    "Primary Role:{0}" -f $ENV:COMPUTERNAME
}

Written by masayuki.ozawa

3月 24th, 2015 at 11:20 pm

Posted in 未分類

Tagged with

2 Responses to 'PowerShell で可用性グループの情報を取得した場合のリフレッシュについて'

Subscribe to comments with RSS or TrackBack to 'PowerShell で可用性グループの情報を取得した場合のリフレッシュについて'.

  1. 記事はいつも参考になっています、引き続き、読ませていただきます。

    hong

    1 5月 15 at 20:19

  2. とても参考になりました、引き続き活用させていただきます。

    hong

    1 5月 15 at 20:33

Leave a Reply

*