Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe von Azure Automation und PowerShell-Runbooks können Sie automatisierte Datenaktualisierungsvorgänge für Ihre Azure Analysis-Tabellenmodelle ausführen.
Im Beispiel in diesem Artikel wird das SqlServer PowerShell-Modul verwendet. Ein PowerShell-Beispielrunbook, das die Aktualisierung eines Modells veranschaulicht, wird weiter unten in diesem Artikel bereitgestellt.
Authentifizierung
Alle Aufrufe müssen mit einem gültigen Microsoft Entra ID-Token (OAuth 2) authentifiziert werden. Das Beispiel in diesem Artikel verwendet einen Dienstprinzipalnamen (Service Principal Name, SPN) für die Authentifizierung bei Azure Analysis Services. Weitere Informationen finden Sie unter Erstellen eines Dienstprinzipals mithilfe des Azure-Portals.
Voraussetzungen
Von Bedeutung
Das folgende Beispiel setzt voraus, dass die Azure Analysis Services-Firewall deaktiviert ist. Wenn eine Firewall aktiviert ist, muss die öffentliche IP-Adresse des Anforderungsinitiators in einer Firewallregel enthalten sein.
Installieren von SqlServer-Modulen aus dem PowerShell-Katalog
Klicken Sie in Ihrem Azure Automation-Konto auf Module, und durchsuchen Sie dann den Katalog.
Suchen Sie in der Suchleiste nach SqlServer.
Wählen Sie "SqlServer" aus, und klicken Sie dann auf "Importieren".
Klicken Sie auf "OK".
Erstellen eines Dienstprinzipals (SPN)
Weitere Informationen zum Erstellen eines Dienstprinzipals finden Sie unter Erstellen eines Dienstprinzipals mithilfe des Azure-Portals.
Konfigurieren von Berechtigungen in Azure Analysis Services
Der von Ihnen erstellte Dienstprinzipal muss über Serveradministratorberechtigungen auf dem Server verfügen. Weitere Informationen finden Sie unter Hinzufügen eines Dienstprinzipals zur Serveradministratorrolle.
Entwerfen des Azure Automation-Runbooks
Erstellen Sie im Automatisierungskonto eine Anmeldeinformationsressource, um den Dienstprinzipal sicher zu speichern.
Geben Sie die Details für die Anmeldeinformationen ein. Geben Sie unter "Benutzername" die Dienstprinzipalanwendungs-ID (appid) ein, und geben Sie dann im Kennwort den Dienstprinzipalschlüssel ein.
Importieren Sie das Automation-Runbook.
Suchen Sie nach der Refresh-Model.ps1 Datei, geben Sie einen Namen und eine Beschreibung ein, und klicken Sie dann auf "Erstellen".
Hinweis
Verwenden Sie das Skript aus dem Beispiel-PowerShell-Runbook-Abschnitt unten in diesem Dokument, um eine Datei namens Refresh-Model.ps1 zu erstellen und auf dem lokalen Computer zu speichern, um in Runbook zu importieren.
Nachdem das Runbook erstellt wurde, wechselt es automatisch in den Bearbeitungsmodus. Wählen Sie "Veröffentlichen" aus.
Hinweis
Die zuvor erstellte Anmeldeinformationsressource wird vom Runbook mithilfe des Befehls "Get-AutomationPSCredential" abgerufen. Dieser Befehl wird dann an den PowerShell-Befehl Invoke-ProcessASADatabase übergeben, um die Authentifizierung für Azure Analysis Services auszuführen.
Testen Sie das Runbook, indem Sie auf "Start" klicken.
Füllen Sie die Parameter DATABASENAME, ANALYSISSERVER und REFRESHTYPE aus, und klicken Sie dann auf OK. Der WEBHOOKDATA-Parameter ist nicht erforderlich, wenn das Runbook manuell ausgeführt wird.
Wenn das Runbook erfolgreich ausgeführt wurde, erhalten Sie eine Ausgabe ähnlich der folgenden:
Verwenden eines eigenständigen Azure Automation-Runbooks
Das Runbook kann so konfiguriert werden, dass die Aktualisierung des Azure Analysis Services-Modells nach Zeitplan ausgelöst wird.
Dies kann wie folgt konfiguriert werden:
Klicken Sie im Automatisierungs-Runbook auf "Zeitpläne" und dann auf "Zeitplan hinzufügen".
Klicken Sie auf "Zeitplan>erstellen", und geben Sie dann die Details ein.
Klicken Sie auf "Erstellen".
Füllen Sie die Parameter für den Zeitplan aus. Diese werden jedes Mal verwendet, wenn das Runbook ausgelöst wird. Der WEBHOOKDATA-Parameter sollte leer bleiben, wenn er über einen Zeitplan ausgeführt wird.
Klicken Sie auf "OK".
Nutzen mit Data Factory
Um das Runbook mithilfe von Azure Data Factory zu nutzen, erstellen Sie zuerst einen Webhook für das Runbook. Der Webhook stellt eine URL bereit, die über eine Azure Data Factory-Webaktivität aufgerufen werden kann.
Von Bedeutung
Um einen Webhook zu erstellen, muss der Status des Runbook veröffentlicht werden.
Klicken Sie in Ihrem Automatisierungs-Runbook auf Webhooks, und klicken Sie dann auf "Webhook hinzufügen".
Geben Sie für den Webhook einen Namen und ein Ablaufdatum an. Mit dem Namen wird der Webhook lediglich im Automation-Runbook identifiziert, er ist kein Bestandteil der URL.
Vorsicht
Kopieren Sie die URL vor dem Schließen des Assistenten. Nach dem Schließen können Sie nicht mehr zurückkehren.
Die Parameter für den Webhook können leer bleiben. Wenn Sie die Azure Data Factory-Webaktivität konfigurieren, können die Parameter in den Text des Webaufrufs übergeben werden.
Konfigurieren einer Webaktivität in Data Factory
Beispiel
Die URL ist die URL, die aus dem Webhook erstellt wurde.
Der Textkörper ist ein JSON-Dokument, das die folgenden Eigenschaften enthalten soll:
| Eigentum | Wert |
|---|---|
| AnalysisServicesDatabase | Name der Azure Analysis Services-Datenbank Beispiel: AdventureWorksDB |
| AnalysisServicesServer | Name des Azure Analysis Services-Servers Beispiel: https://westus.asazure.windows.net/servers/myserver/models/AdventureWorks/ |
| DatabaseRefreshType | Typ der auszuführenden Aktualisierung Beispiel: Vollständig |
JSON-Beispieltext:
{
"AnalysisServicesDatabaseName": "AdventureWorksDB",
"AnalysisServicesServer": "asazure://westeurope.asazure.windows.net/MyAnalysisServer",
"DatabaseRefreshType": "Full"
}
Diese Parameter werden im PowerShell-Skript des Runbooks definiert. Wenn die Webaktivität ausgeführt wird, wird als JSON-Nutzlast WEBHOOKDATA übergeben.
Dies wird deserialisiert und als PowerShell-Parameter gespeichert, die dann im PowerShell-Befehl Invoke-ProcessASDatabase verwendet werden.
Verwenden eines Hybrid Workers mit Azure Analysis Services
Ein virtueller Azure-Computer mit einer statischen öffentlichen IP-Adresse kann als Azure Automation Hybrid Worker verwendet werden. Diese öffentliche IP-Adresse kann dann der Azure Analysis Services-Firewall hinzugefügt werden.
Von Bedeutung
Stellen Sie sicher, dass die öffentliche IP-Adresse des virtuellen Computers als statische Adresse konfiguriert ist.
Weitere Informationen zum Konfigurieren von Azure Automation Hybrid Workers finden Sie unter Hybrid Runbook Worker-Installation.
Nachdem ein Hybrid-Worker konfiguriert wurde, erstellen Sie einen Webhook, wie im Abschnitt "Verwenden von Data Factory" beschrieben. Der einzige Unterschied besteht darin, beim Konfigurieren des Webhooks die Option " Bei>Hybrid Worker ausführen" auszuwählen.
Beispielwebhook mithilfe von Hybrid Worker:
PowerShell-Beispielrunbook
Der folgende Codeausschnitt ist ein Beispiel dafür, wie die Aktualisierung des Azure Analysis Services-Modells mit einem PowerShell-Runbook durchgeführt werden kann.
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
}