Azure sql database 如何使用Azure PowerShell命令Get-AzureRMSqlDatabase确定SQL数据库复制角色
使用Azure Resource Manager PowerShell命令,是否有一种简单的方法来判断数据库作为主数据库还是辅助数据库参与了地理复制角色?我曾经读取由Azure sql database 如何使用Azure PowerShell命令Get-AzureRMSqlDatabase确定SQL数据库复制角色,azure-sql-database,azure-powershell,Azure Sql Database,Azure Powershell,使用Azure Resource Manager PowerShell命令,是否有一种简单的方法来判断数据库作为主数据库还是辅助数据库参与了地理复制角色?我曾经读取由Get-AzureSqlDatabase返回的Status属性,值为0表示数据库是主数据库。但是,Get-AzureRMSqlDatabase没有返回相应的属性;它仍然返回状态列,但主数据库和辅助数据库的值均为“Online” 我之所以需要这样做,是因为我正在尝试跨多个订阅和服务器维护几十个数据库,并且我正在尝试自动执行只应在主数据
Get-AzureSqlDatabase
返回的Status属性,值为0表示数据库是主数据库。但是,Get-AzureRMSqlDatabase
没有返回相应的属性;它仍然返回状态列,但主数据库和辅助数据库的值均为“Online”
我之所以需要这样做,是因为我正在尝试跨多个订阅和服务器维护几十个数据库,并且我正在尝试自动执行只应在主数据库上执行的操作。我找到了解决此问题的合理方法,每个数据库多打一次电话。命令Get-AzureRmSqlDatabaseReplicationLink正是我所需要的,但有一点需要注意;我知道我不应该传递与ResourceGroupName和PartnerResourceGroupName相同的值,但它似乎可以工作(至少目前是这样),因此我将使用它来避免在订阅中必须对每个资源组进行一次调用 使用它,我能够创建这个简单的函数:
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
}
}