SQL Server 通过Powershell或CLI在Azure Synapse上运行SQL脚本

t40tm48m  于 2022-11-28  发布在  Shell
关注(0)|答案(1)|浏览(236)

我正在尝试给予服务主体对我的Azure Synapse SQL数据的SELECT访问权限。

CREATE USER [MY_SERVICE_PRINCIPAL] FROM EXTERNAL PROVIDER WITH DEFAFULT_SCHEMA=[dbo]
GO
GRANT SELECT ON DATABASE :: MyDB TO [MY_SERVICE_PRINCIPAL];

这可以正常工作,但需要我登录到工作区才能为每个新服务主体执行此操作。是否可以自动执行此操作?我通过Azure CLI自动创建服务主体。是否可以从

fruv7luv

fruv7luv1#

创建自动化帐户

1.打开Azure Portal并搜索自动化帐户
x1c 0d1x选择自动化帐户,然后在另一个屏幕中单击创建并填写所需的属性。

1.创建自动化帐户后,Runbook选项出现在左侧菜单中。通过打开此选项,它具有不同类型的默认/教程Runbook。要自动化Synapse Analytics的过程,请在自动化帐户中安装一些所需的模块。在左侧菜单中,找到并单击模块,搜索Az.帐户并将此模块导入到自动化帐户。

导入之后,按照相同的过程导入Az.Synapse,这是此自动化任务所需的另一个模块。
1.导入所需模块后,创建Runbook。


4.单击Create a Runbook后,将打开一个编辑器,粘贴以下代码,保存Runbook并发布它。

[CmdletBinding()]

param (

   [Parameter(Mandatory=$true)]

   [string]$ResourceGroupName ="rg_ResourceGroup",

   [Parameter(Mandatory=$true)]

   [string]$WorkspaceName = "wp_WorkSpaceName",

   [Parameter(Mandatory=$true)]

   [string]$Operation = "op_Pause"

)

Begin    {

Write-Output "Connecting on $(Get-Date)"

#Connect to Azure using the Run As Account

Try{

$servicePrincipalConnection=Get-AutomationConnection -Name "AzureRunAsConnection"

Connect-AzAccount  -ServicePrincipal -TenantId $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint

}

Catch {

if (!$servicePrincipalConnection){

$ErrorMessage = "Connection $connectionName not found."

throw $ErrorMessage

} else{

Write-Output -Message $_.Exception

throw $_.Exception

}

}

# Validation parameters

$ArrayOperations = "Pause","Start","Restart"

If ($Operation -notin $ArrayOperations)

{

Throw "Only Pause, Start, Restart Operations are valid"

}

# Start

Write-Output "Starting process on $(Get-Date)"

Try{

$Status = Get-AzSynapseSqlPool –ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName | Select-Object Status | Format-Table -HideTableHeaders | Out-String

$Status = $Status -replace "`t|`n|`r",""

Write-Output "The current status is "$Status.trim()" on $(Get-Date)"

}

Catch {

Write-Output $_.Exception

throw $_.Exception

}

# Start block

# Start

Write-Output "Starting $Operation on $(Get-Date)"

if(($Operation -eq "Start") -and ($Status.trim() -ne "Online")){

Write-Output "Starting $Operation Operation"

try

{

Write-Output "Starting on $(Get-Date)"

Get-AzSynapseSqlPool –ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName | Resume-AzSynapseSqlPool

}

catch

{

Write-Output "Error while executing "$Operation

}

}

# Pause block

if(($Operation -eq "Pause") -and ($Status.trim() -ne "Paused")){

write-Output "Starting $Operation Operation"

try

{

Write-Output "Pausing on $(Get-Date)"

Get-AzSynapseSqlPool –ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName | Suspend-AzSynapseSqlPool

}

catch

{

Write-Output "Error while executing "$Operation

}

}

# Restart block

if(($Operation -eq "Restart") -and ($Status.trim() -eq "Online")){

Write-Output "Starting $Operation Operation"

try

{

Write-Output "Pausing on $(Get-Date)"

Get-AzSynapseSqlPool –ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName | Suspend-AzSynapseSqlPool

Write-Output "Starting on $(Get-Date)"

Get-AzSynapseSqlPool –ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName | Resume-AzSynapseSqlPool

}

catch

{

Write-Output "Error while executing "$Operation

}

        }

}

End

{

# Exit

Write-Output "Finished process on $(Get-Date)"

}

x1c4d 1x指令集
1.发布后,单击开始按钮并输入Synapse Analytics值,将创建一个作业。
1.作业页面上有各种选项,如其状态、错误、异常等。完成作业后,Synapse将通过此Runbook恢复/暂停。
1.现在为Runbook添加计划以按计划完全自动执行该过程。在Runbook页面上,单击功能区中“计划”按钮的链接,然后添加计划并配置所需的参数。

相关问题