如何解决在 Azure 上运行的 SQL Server 实例
我正在尝试为 Azure 上的数据库创建备份策略作为 SQL 服务器的 PAAS 服务。我想到的是使用 PowerShell 备份 SQL Server 中的数据库,然后将其上传到 Azure 存储帐户,PowerShell 将在 Microsoft 托管代理内的 Azure Devops 上运行。
但我对大多数问题感到困惑:
- 如何获取该 SQL 服务器的实例?
- 如何为这个任务生成新的 SQL 凭据,因为它取决于我上面提到的任务?
请提出您宝贵的建议。
解决方法
我建议您将 Azure 自动化和 Runbook 用于此类事情。 Here 您有一个执行备份的 RunBook 示例。
param(
[parameter(Mandatory=$true)]
[String] $AutomationConnection,[parameter(Mandatory=$true)]
[String] $SubscriptionName,[parameter(Mandatory=$true)]
[String]$StorageAccount,[parameter(Mandatory=$true)]
[String]$BlobContainer,[parameter(Mandatory=$true)]
[String]$StorageKey,[parameter(Mandatory=$true)]
[String]$StorageKeytype = "StorageAccessKey",[parameter(Mandatory=$true)]
[String]$DbName,[parameter(Mandatory=$true)]
[String]$ResourceGroupName,[parameter(Mandatory=$true)]
[String]$ServerName,[parameter(Mandatory=$true)]
[String]$serverAdmin,[parameter(Mandatory=$true)]
[String]$ServerPassword
)
$VERSION = "0.2.0"
$currentTime = (Get-Date).ToUniversalTime()
Write-Output "Backup SQL Azure db automation script - version $VERSION"
Write-Output "Runbook started..."
# Main runbook content
try
{
$securePassword = ConvertTo-SecureString -String $serverPassword -AsPlainText -Force
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $serverAdmin,$securePassword
# Generate a unique filename for the BACPAC
$bacpacFilename = $ServerName + '-' + $DbName + '-' +(Get-Date).ToString("yyyyMMddTHHmmssZ") + ".bacpac"
# Storage account info for the BACPAC
$BaseStorageUri = "https://$storageAccount.blob.core.windows.net/$blobContainer/"
$BacpacUri = $BaseStorageUri + $bacpacFilename
Write-Output "Logging in to Azure..."
# Get the connection
$con = Get-AutomationConnection -Name $AutomationConnection
$null = Add-AzureRmAccount -ServicePrincipal -TenantId $con.TenantId -ApplicationId $con.ApplicationId -CertificateThumbprint $con.CertificateThumbprint
$null = Select-AzureRmSubscription -SubscriptionName $SubscriptionName
Write-Output "Will backup db $DbName to $blobContainer blob storage in storage account $storageAccount with name $bacpacFilename ..."
$exportRequest = New-AzureRmSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
-DatabaseName $DbName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
-AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password
# Check status of the export
$status = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
Write-Output "Export status is:"
$status
}
catch
{
if (!$con)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
finally
{
"Runbook finished (Duration: $(("{0:hh\:mm\:ss}" -f ((Get-Date).ToUniversalTime() - $currentTime))))"
}
而 here 是在 PowerShell 中创建 RunBook 的教程。有了它,您可以设置时间表并轻松扩展所需数量的数据库。
另一个选项和最好的 IMO 是用于 Azure SQL 备份的内置功能。请看一下here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。