在Azure中,如果使用故障转移组设置SQL Server并将故障转移策略设置为自动,那么如何在发生SQL Server故障转移时配置警报或通知?如果无法在Monitor中进行设置,可以在其他地方编写脚本吗?
答案 0 :(得分:0)
Azure SQL数据库仅支持以下警报指标:
当SQL Server发生故障时,我们无法使用警报。您可以从以下文档中获取此信息:Create alerts for Azure SQL Database and Data Warehouse using Azure portal。
希望这会有所帮助。
答案 1 :(得分:0)
找到了一种使用自动化帐户> Runbook>使用Powershell在Azure中编写脚本的方法。像这样的简单脚本应该可以做到。只需找出运行方式帐户并按计划或警报触发即可。
function sendEmailAlert
{
# Send email
}
function checkFailover
{
$list = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName "my-resourceGroup" -server "my-sql-server"
if ( $list.ReplicationRole -ne 'Primary')
{
sendEmailAlert
}
}
checkFailover
答案 2 :(得分: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
此过程可能会帮助其他人。