2016-08-08 32 views
1

Mit den Azure Resource Manager-PowerShell-Befehlen können Sie auf einfache Weise feststellen, ob eine Datenbank an der Georeplikationsrolle als primäre oder sekundäre Rolle beteiligt ist. Ich habe die Status-Eigenschaft gelesen, die von Get-AzureSqlDatabase zurückgegeben wurde, und ein Wert von 0 bedeutete, dass die Datenbank primär war. Es gibt jedoch keine entsprechende Eigenschaft, die von Get-AzureRMSqlDatabase zurückgegeben wird; Es gibt immer noch eine Statusspalte zurück, aber der Wert ist sowohl für primäre als auch für sekundäre Datenbanken "Online".Ermitteln der SQL-Datenbankreplikationsrollen mithilfe des Azure PowerShell-Befehls Get-AzureRMSqlDatabase

Der Grund dafür ist, dass ich versuche, Dutzende von Datenbanken über mehrere Abonnements und Server hinweg zu verwalten, und ich versuche, Aktionen zu automatisieren, die nur für die Primärdatenbanken durchgeführt werden sollten.

Antwort

2

Ich fand eine vernünftige Lösung für dieses Problem, einen zusätzlichen Anruf pro Datenbank. Das Commandlet Get-AzureRmSqlDatabaseReplicationLink tut genau das, was ich brauchte, mit einem Vorbehalt; Ich weiß, dass ich nicht den gleichen Wert wie ResourceGroupName und PartnerResourceGroupName weitergeben sollte, aber es scheint zu funktionieren (zumindest für jetzt), also gehe ich damit um, um zu vermeiden, dass ich einen Anruf pro Ressourcengruppe machen muss das Abonnement.

verwenden, das konnte ich diese einfache Funktion erstellen:

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 
    } 
}