0

在 Azure 中,如果您设置带有故障转移组的 SQL 服务器并且故障转移策略设置为自动,那么当 SQL Server 故障转移发生时,如何配置警报或通知?如果无法在 Monitor 中设置,是否可以在其他地方编写脚本?

4

3 回答 3

1

找到了一种在 Azure 中使用自动化帐户 > Runbook > 使用 Powershell 编写脚本的方法。像这样的简单脚本应该可以做到。只需要弄清楚作为帐户运行并通过计划或警报触发它。

function sendEmailAlert
{
    # Send email
}


function checkFailover
{
    $list = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName "my-resourceGroup" -server "my-sql-server"

    if ( $list.ReplicationRole -ne 'Primary')
    { 
        sendEmailAlert
    }
}

checkFailover
于 2019-05-30T00:36:58.107 回答
0

谢谢 CKelly - 给了我在 Azure 中应该成为标准的东西的良好开端。我创建了一个 Azure 自动化帐户,添加了 Az.Account、Az.Automation 和 Az.Sql 模块,然后在您的代码中添加了更多内容。在 Azure 中,我创建了一个 SendGrid 帐户。

#use the Azure Account Automation details to login to Azure
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

#create email alert
function sendEmailAlert
{
    # Send email
   $From = "<email from>"
$To = "<email of stakeholders to receive this message>"
$SMTPServer = "smtp.sendgrid.net"
$SMTPPort = "587"
$Username = "<sendgrid username>"
$Password = "<sendgridpassword>"
$subject = "<email subject>"
$body = "<text to go in email body>"
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($From, $To, $subject, $body)
}

#create failover check and send if the primary server has changed
function checkFailover
{
    $list = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName "<the resourcegroup>" -server "<SQl Databse server>"

    if ( $list.ReplicationRole -ne 'Primary')
    { 
        sendEmailAlert
    }
}

checkFailover

这个过程可能会帮助其他人。

于 2020-08-19T03:00:55.543 回答
0

Azure SQL 数据库仅支持以下警报指标:

在此处输入图像描述

当 SQL Server 发生故障时,我们无法使用警报。您可以从此文档中获得此信息:使用 Azure 门户为 Azure SQL 数据库和数据仓库创建警报

希望这可以帮助。

于 2019-05-16T06:14:55.540 回答