2016-08-08 4 views
1

Azure Resource ManagerのPowerShellコマンドを使用すると、データベースがプライマリまたはセカンダリとしてジオレプリケーションの役割に関与しているかどうかを簡単に確認できますか?私はGet-AzureSqlDatabaseによって返されたStatusプロパティを読んでいました。値0は、データベースがプライマリであることを意味していました。ただし、Get-AzureRMSqlDatabaseによって返される対応するプロパティはありません。それでもステータス列は返されますが、プライマリとセカンダリの両方のデータベースの値は "Online"です。Azure PowerShellコマンドを使用してSQLデータベースの複製の役割を判断する方法Get-AzureRMSqlDatabase

私が必要とする理由は、私は複数のサブスクリプションとサーバーにわたって数十のデータベースを維持しようとしており、プライマリデータベースでのみ実行する必要があるアクションを自動化しようとしています。

答えて

2

私は、この問題に対する妥当な解決策を見つけ、データベースごとに1つの追加呼び出しを行いました。コマンドレットのGet-AzureRmSqlDatabaseReplicationLinkは、私が必要としていたことを1つの警告で正確に行います。私は、ResourceGroupNameとPartnerResourceGroupNameの両方と同じ値を渡すはずではないことを知っていますが、少なくとも現時点ではうまくいくと思われますので、リソースグループごとに1つの呼び出しを行う必要はありません。サブスクリプション

Function IsSecondarySqlDatabase { 
    # This function determines whether specified database is performing a secondary replication role. 
    # You can use the Get-AzureRMSqlDatabase command to get an instance of a [Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel] object. 
    param 
    (
     [Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel] $SqlDB 
    ) 
    process { 
     $IsSecondary = $false; 
     $ReplicationLinks = Get-AzureRmSqlDatabaseReplicationLink ` 
      -ResourceGroupName $SqlDB.ResourceGroupName ` 
      -ServerName $SqlDB.ServerName ` 
      -DatabaseName $SqlDB.DatabaseName ` 
      -PartnerResourceGroupName $SqlDB.ResourceGroupName 
     $ReplicationLinks | ForEach-Object -Process ` 
     { 
      if ($_.Role -ne "Primary") 
      { 
       $IsSecondary = $true 
      } 
     } 
     return $IsSecondary 
    } 
} 
:私はこの単純な関数を作成することができた、という使い方

関連する問題