Sql 如何在azure for DTU上自动运行此脚本

Sql 如何在azure for DTU上自动运行此脚本,sql,azure,powershell,azure-sql-database,Sql,Azure,Powershell,Azure Sql Database,我可以运行上面的脚本使我的sql数据库达到S0 DTU级别 我能自动做这个吗 顺便说一句,我在论坛和stackoverflow上搜索过, 他们推荐自动化帐户和runebook。 但是我没有RunAsAccount。我没有管理员权限,无法创建RunAsAccount。所以我不能用runbook 你能给我推荐另一种方式吗 谢谢:) 但是我没有RunAsAccount。我没有管理员权限,无法创建RunAsAccount。所以我不能用runbook 如果要使用运行方式帐户创建自动化帐户,您需要在订阅中具

我可以运行上面的脚本使我的sql数据库达到S0 DTU级别

我能自动做这个吗

顺便说一句,我在论坛和stackoverflow上搜索过, 他们推荐自动化帐户和runebook。 但是我没有RunAsAccount。我没有管理员权限,无法创建RunAsAccount。所以我不能用runbook

你能给我推荐另一种方式吗

谢谢:)

但是我没有RunAsAccount。我没有管理员权限,无法创建RunAsAccount。所以我不能用runbook

如果要使用运行方式帐户创建自动化帐户,您需要在订阅中具有
所有者
角色,因为在创建运行方式帐户(服务主体)时,它会自动将服务主体作为
参与者添加到订阅中
,只需使用
所有者
即可


但是,如果您只想在自动化帐户中使用runbook,则不需要
所有者
角色。您只需请求订阅中的
所有者
为您创建一个带有运行方式帐户的自动化帐户,然后您就可以创建一个powershell runbook,并使用例如
参与者
角色运行上面的命令

所有者
为您创建自动化帐户后,请按照以下步骤操作

1.导航到自动化帐户->
运行手册->创建运行手册->创建Powershell运行手册

2.您正在使用的两个命令
Get-AzureSqlDatabaseServiceObjective
Set-AzureSqlDatabase
,都属于
Azure
,即ASM powershell模块,它很旧,如果您想使用它们,您需要使用Azure Classic Run-As帐户(CSP订阅中不支持)。因此,我建议您使用新的
Az
powershell模块。在自动化帐户->
模块
中,检查是否有
Az.Accounts
Az.Sql
模块,如果没有,在
模块
->
浏览库
中,搜索模块并导入它们。)

导入成功后,使用下面的脚本登录并使用标准S0设置sql db

 $ServiceObjective = Get-AzureSqlDatabaseServiceObjective -ServerName exampledb-ServiceObjectiveName S0
 Set-AzureSqlDatabase -DatabaseName exampledb-ServerName exampledb-ServiceObjective $ServiceObjective
$connectionName=“AzureRunAsConnection”
尝试
{
#获取连接“AzureRunAsConnection”
$servicePrincipalConnection=获取自动连接-名称$connectionName
“登录到Azure…”
连接AzAccount`
-服务负责人`
-租户ID$servicePrincipalConnection.TenantId`
-ApplicationId$servicePrincipalConnection.ApplicationId`
-CertificateThumbprint$servicePrincipalConnection.CertificateThumbprint
}
抓住{
if(!$servicePrincipalConnection)
{
$ErrorMessage=“未找到连接$connectionName。”
抛出$ErrorMessage
}否则{
写入错误-消息$\异常
抛出$\异常
}
}
设置AZSQLDABASE-ResourceGroupName”“-DatabaseName”“-ServerName”“-Edition“标准”-RequestedServiceObjectiveName“S0”

3.如果您希望按照计划自动运行脚本,您可以按照此链接进行操作。

您可以使用powershell查看azure函数:。它是runbook的一个很好的替代品=更便宜。您可以在x分钟内运行脚本以检查所需内容。它是否用于非生产环境?对于开发,您可能希望使用
Azure SQL数据库serverless
:。它将根据负载和不活动情况进行放大和缩小。我将其用于开发人员工作负载,这非常好。最后一件事是创建警报度量:。然后你使用一个webhook指向你的azure powershell函数。那么你真的尝试创建自动化帐户了吗?好的,要使用它,无需成为管理员。您只需请求订阅中的
所有者
为您创建一个带有运行方式帐户的自动化帐户,然后您就可以创建一个powershell runbook,并使用上面的
参与者
角色运行您的命令。因为在创建运行方式帐户(service princiapl)时,它会自动将其添加到订阅中,但如果您不是
所有者
,则无法执行此操作。如果您只想使用runbook,则无需成为
所有者
$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         

    "Logging in to Azure..."
    Connect-AzAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}

Set-AzSqlDatabase -ResourceGroupName "<resource-group-name>" -DatabaseName "<database-name>" -ServerName "<server-name>" -Edition "Standard" -RequestedServiceObjectiveName "S0"