我正在尝试自动化一个无服务器的azure数据库,使其在设定的时间内在线,然后暂停"下班时间";。
有没有一种方法可以使用PowerShell命令或其他自动方法在工作周的特定时间开始将其联机?
现在使用autopause选项,但主要问题是它需要初始数据库命中才能使数据库联机,这会导致从第一次数据库命中到数据库联机并可由应用程序使用之间的停机时间过长。感谢
您有REST API调用来暂停Azure SQL数据库。
https://learn.microsoft.com/en-us/rest/api/sql/Databases/Pause
POST https://management.azure.com/subscriptions/00000000-1111-2222-3333-
444444444444/resourceGroups/Default-SQL-
SouthEastAsia/providers/Microsoft.Sql/servers/
testsvr/databases/testdwdb/pause?api-version=2019-06-01-preview
类似地,您可以使用REST API调用来恢复Azure SQL数据库
https://learn.microsoft.com/en-us/rest/api/sql/databases/resume
POST https://management.azure.com/subscriptions/{subscriptionId}
/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/
databases/{databaseName}/resume?api-version=2019-06-01-preview
您可以将自动呼叫设置为暂停和恢复的特定时间。您可以利用Powershell中的Invoke-RestMethod
引用来调用rest方法。
PowerShell命令Set AzSqlDatabase可以为无服务器的azure数据库设置AutoPauseDelayInMinutes,它可能是自动化此过程的一个选项。
将AutoPauseDelayInMinutes设置为-1可在正常工作时间内选择退出,然后在下班前设置为所需值。
由于暂停和恢复命令尚未在Azure SQL数据库的无服务器版本上实现,对于恢复,您只需使用简单的powershell 打开与它的连接
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $connectionString
$sqlConnection.Open()
通过设置ConnectTimeout并重试,您可以在从应用程序/服务进行实际连接之前确保数据库处于联机状态。