我正在运行自动化手册中的代码,以刷新分析服务模型:
Add-AzureAnalysisServicesAccount -RolloutEnvironment $RolloutEnvironment -ServicePrincipal -Credential $_Credential -TenantId $TenantId
Write-output ("Refreshing Analysis Server mode $DatabaseName...")
# Perform a Process Full on the Azure Analysis Services database
Invoke-ProcessASDatabase -Server $Server -DatabaseName $DatabaseName -RefreshType Full -ServicePrincipal -Credential $_Credential
从天蓝色的自动化帐户运行模型刷新时出现以下错误:
Invoke-ProcessASDatabase:无法将修改保存到服务器。返回错误:'给定的凭证缺少必需的属性。数据源种类:SQL。身份验证类型:OAuth2。物业名称:AccessToken。 IDbConnection接口引发了异常。技术细节:RootActivityId:ad01e91e-a17f-4b69-8e1d-ad2f18ddbdeb日期(UTC):12/30/2019 9:59:09 AM'。在第24行:char:1 + Invoke-ProcessASDatabase -Server $ Server-DatabaseName $ DatabaseName ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo:InvalidArgument:(DevOps:String)[Invoke-ProcessASDatabase],OperationException + FullyQualifiedErrorId:Microsoft.AnalysisServices.PowerShell.Cmdlets.ProcessASDatabase
我认为此文档-Refresh with Azure Automation足够清楚,请按照以下说明尝试。确保您创建的服务主体在服务器上具有服务器管理员权限,并在运行簿中创建Credential进行存储。
示例脚本:
param
(
[Parameter (Mandatory = $false)]
[object] $WebhookData,
[Parameter (Mandatory = $false)]
[String] $DatabaseName,
[Parameter (Mandatory = $false)]
[String] $AnalysisServer,
[Parameter (Mandatory = $false)]
[String] $RefreshType
)
$_Credential = Get-AutomationPSCredential -Name "ServicePrincipal"
# If runbook was called from Webhook, WebhookData will not be null.
if ($WebhookData)
{
# Retrieve AAS details from Webhook request body
$atmParameters = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
Write-Output "CredentialName: $($atmParameters.CredentialName)"
Write-Output "AnalysisServicesDatabaseName: $($atmParameters.AnalysisServicesDatabaseName)"
Write-Output "AnalysisServicesServer: $($atmParameters.AnalysisServicesServer)"
Write-Output "DatabaseRefreshType: $($atmParameters.DatabaseRefreshType)"
$_databaseName = $atmParameters.AnalysisServicesDatabaseName
$_analysisServer = $atmParameters.AnalysisServicesServer
$_refreshType = $atmParameters.DatabaseRefreshType
Invoke-ProcessASDatabase -DatabaseName $_databaseName -RefreshType $_refreshType -Server $_analysisServer -ServicePrincipal -Credential $_credential
}
else
{
Invoke-ProcessASDatabase -DatabaseName $DatabaseName -RefreshType $RefreshType -Server $AnalysisServer -ServicePrincipal -Credential $_Credential
}