Analysis Services PowerShell

SQL Server 2012 Analysis Services (SSAS) schließt einen SQLAS-Anbieter (Analysis Services PowerShell) und Cmdlets ein, damit Sie mithilfe von Windows PowerShell durch Analysis Services-Objekte navigieren und diese verwalten und abfragen können.

Analysis Services PowerShell besteht aus folgenden Komponenten:

  • SQLAS-Anbieter zum Navigieren der AMO-Hierarchie (Analysis Management Object).

  • Invoke-ASCmd-Cmdlet zum Ausführen von MDX, DMX oder XMLA-Skripts.

  • Taskbezogene Cmdlets für Routinevorgänge wie Verarbeitung, Rollenverwaltung, Partitionsverwaltung, Sicherung und Wiederherstellung.

In diesem Artikel

Voraussetzungen

Unterstützte Versionen und Modi von Analysis Services

Authentifizierungsanforderungen und Sicherheitsüberlegungen

Analysis Services PowerShell-Tasks

Weitere Informationen zur Syntax und Beispiele finden Sie unter PowerShell-Reference für Analysis Services.

Voraussetzungen

Windows PowerShell 2.0 muss installiert sein. Es ist standardmäßig auf neueren Versionen der Windows-Betriebssysteme installiert. Weitere Informationen finden Sie unter Installieren von Windows PowerShell 2.0.

Sie müssen eine SQL Server-Funktion installieren, die das SQL Server PowerShell (SQLPS)-Modul und Clientbibliotheken enthält. Die einfachste Möglichkeit hierzu ist das Installieren von SQL Server Management Studio, das die PowerShell-Funktion und Clientbibliotheken automatisch beinhaltet. Das SQLPS-Modul (SQL Server PowerShell) enthält alle PowerShell-Anbieter und Cmdlets für alle SQL Server-Funktionen, einschließlich des SQLASCmdlets-Moduls und des SQLAS-Anbieters, der zum Navigieren durch die Analysis Services-Objekthierarchie verwendet wird.

Bevor Sie den SQLAS-Anbieter und die Cmdlets verwenden können, müssen Sie das SQLPS-Modul importieren. Der SQLAS-Anbieter ist eine Erweiterung des SQLServer-Anbieters. Es gibt mehrere Möglichkeiten, das SQLPS-Modul zu importieren. Weitere Informationen finden Sie unter Importieren des SQLPS-Moduls.

Remotezugriff auf eine Analysis Services-Instanz erfordert, dass Sie Remoteverwaltung und Dateifreigabe aktivieren. Weitere Informationen finden Sie in diesem Thema unter Enable Remote Administration.

Unterstützte Versionen und Modi von Analysis Services

Derzeit wird Analysis Services PowerShell in einer beliebigen Edition von SQL Server 2012 Analysis Services unterstützt, die unter Windows Server 2008 R2, Windows Server 2008 SP1 oder Windows 7 ausgeführt wird.

In der folgenden Tabelle wird die Verfügbarkeit von Analysis Services PowerShell in unterschiedlichen Kontexten angezeigt.

Kontext

Verfügbarkeit der PowerShell-Funktion

Mehrdimensionale Instanzen und Datenbanken

Unterstützt für lokale und Remoteverwaltung.

Merge-Partition erfordert eine lokale Verbindung.

Tabellarische Instanzen und Datenbanken

Unterstützt für lokale und Remoteverwaltung.

Weitere Informationen finden Sie unter Verwalten von tabellarischen Modellen mit PowerShell.

PowerPivot für SharePoint-Instanzen und Datenbanken

Eingeschränkte Unterstützung. Sie können Instanz- und Datenbankinformationen mithilfe von HTTP-Verbindungen und dem SQLAS-Anbieter anzeigen.

Die Verwendung der Cmdlets wird jedoch nicht unterstützt. Verwenden Sie Analysis Services PowerShell nicht, um die PowerPivot-Datenbank im Arbeitsspeicher zu sichern und wiederherzustellen, Rollen hinzuzufügen oder zu entfernen, Daten zu verarbeiten oder beliebige XMLA-Skripts auszuführen.

Zu Konfigurationszwecken verfügt PowerPivot für SharePoint über integrierte PowerShell-Unterstützung, die getrennt bereitgestellt wird. Weitere Informationen finden Sie unter PowerPivot-Referenz für SharePoint PowerShell.

Systemeigene Verbindungen zu lokalen Cubes

“Data Source=c:\backup\test.cub”

Nicht unterstützt.

HTTP-Verbindungen zu BI-Semantikmodell-Verbindungsdateien (.bism) in SharePoint

“Data Source=https://server/shared_docs/name.bism”

Nicht unterstützt.

Eingebettete Verbindungen zu PowerPivot-Datenbanken

“Data Source=$Embedded$”

Nicht unterstützt.

Lokaler Serverkontext in gespeicherten Prozeduren für Analysis Services

“Data Source=*”

Nicht unterstützt.

Authentifizierungsanforderungen und Sicherheitsüberlegungen

Beim Herstellen einer Verbindung mit Analysis Services müssen Sie die Verbindung mithilfe einer Windows-Benutzeridentität herstellen. In den meisten Fällen wird eine Verbindung mithilfe der integrierten Sicherheit von Windows hergestellt. Dabei wird anhand der Identität des aktuellen Benutzers der Sicherheitskontext festgelegt, unter dem Servervorgänge ausgeführt werden. Es werden jedoch zusätzliche Authentifizierungsmethoden verfügbar, wenn Sie den HTTP-Zugriff auf Analysis Services konfigurieren. In diesem Abschnitt wird erklärt, wie anhand des Typs der Verbindung festgelegt wird, welche Authentifizierungsoptionen Sie verwenden können.

Verbindungen zu Analysis Services werden entweder als systemeigene Verbindungen oder HTTP-Verbindungen eingerichtet. Eine systemeigene Verbindung ist eine direkte Verbindung von einer Clientanwendung zum Server. In einer PowerShell-Sitzung verwendet der PowerShell-Client den OLE DB-Anbieter für Analysis Services, um eine direkte Verbindung mit einer Analysis Services-Instanz herzustellen. Eine systemeigene Verbindung wird immer mithilfe der integrierten Sicherheit von Windows hergestellt, wobei Analysis Services PowerShell als aktueller Benutzer ausgeführt wird. Für Analysis Services wird kein Identitätswechsel unterstützt. Wenn Sie einen Vorgang als ein bestimmter Benutzer ausführen möchten, müssen Sie die PowerShell-Sitzung als dieser Benutzer starten.

HTTP-Verbindungen werden indirekt über IIS hergestellt, sodass zusätzliche Authentifizierungsmöglichkeiten möglich sind, z. B. die Standardauthentifizierung, um eine Verbindung mit einer Analysis Services-Instanz herzustellen. Da IIS den Identitätswechsel unterstützt, können Sie eine Verbindungszeichenfolge mit Anmeldeinformationen angeben, die IIS beim Herstellen einer Verbindung für den Identitätswechsel verwendet. Zum Angeben von Anmeldeinformationen können Sie den –Credential-Parameter verwenden.

Verwenden des –Credential-Parameters in PowerShell

Der –Credential-Parameter verwendet ein PSCredential-Objekt, mit dem ein Benutzername und ein Kennwort angegeben werden. In Analysis Services PowerShell ist der –Credential-Parameter für Cmdlets verfügbar, die eine Verbindungsanforderung an Analysis Services senden. Dies ist anders als bei Cmdlets, die innerhalb des Kontexts einer vorhandenen Verbindung ausgeführt werden. Cmdlets, die eine Verbindungsanforderung senden, sind z. B. Invoke-ASCmd, Backup-ASDatabase und Restore-ASDatabase. Für diese Cmdlets kann der –Credential-Parameter verwendet werden, sofern die folgenden Bedingungen erfüllt sind:

  1. Der Server ist für HTTP-Zugriff konfiguriert. Dies bedeutet, dass IIS die Verbindung behandelt, den Benutzernamen und das Kennwort liest und beim Herstellen einer Verbindung mit Analysis Services einen Identitätswechsel mit dieser Benutzeridentität durchführt. Weitere Informationen finden Sie unter Konfigurieren von HTTP-Zugriff auf Analysis Services unter Internetinformationsdienste (IIS) 7.0.

  2. Das virtuelle IIS-Verzeichnis, das für Analysis Services-HTTP-Zugriff erstellt wurde, ist für die Standardauthentifizierung konfiguriert.

  3. Der Benutzername und das Kennwort, die über das Objekt mit den Anmeldeinformationen bereitgestellt werden, können zu einer Windows-Benutzeridentität aufgelöst werden. Analysis Services verwendet diese Identität als aktuellen Benutzer. Falls der Benutzer kein Windows-Benutzer ist oder nicht über ausreichende Berechtigungen zum Durchführen des angeforderten Vorgangs verfügt, tritt für die Anforderung ein Fehler auf.

Zum Erstellen eines Objekts mit Anmeldeinformationen können Sie das Get-Credential-Cmdlet verwenden, um die Anmeldeinformationen des Operators zu erfassen. Anschließend können Sie das Objekt mit den Anmeldeinformationen für einen Befehl verwenden, der eine Verbindung mit Analysis Services herstellt. Ein möglicher Ansatz wird im folgenden Beispiel veranschaulicht. In diesem Beispiel wird die Verbindung zu einer lokalen Instanz hergestellt, die für den HTTP-Zugriff konfiguriert ist.

PS SQLSERVER:\SQLAS\HTTP_DS> $cred = Get-credential adventureworks\dbadmin
PS SQLSERVER:\SQLAS\HTTP_DS> Invoke-ASCmd –Inputfile:”c:\discoverconnections.xmla” –Credential:$cred

Bei Verwendung der Standardauthentifizierung sollten Sie immer HTTPS mit SSL verwenden, damit Benutzernamen und Kennwörter über eine verschlüsselte Verbindung gesendet werden. Weitere Informationen finden Sie unter Konfigurieren von Secure Sockets Layer in IIS 7.0 und Konfigurieren der Standardauthentifizierung (IIS 7).

Bedenken Sie, dass Anmeldeinformationen, Abfragen und Befehle, die Sie in PowerShell angeben, unverändert an die Transportschicht übergeben werden. Das Einschließen von vertraulichem Inhalt in die Skripts erhöht das Risiko von Angriffen durch Skripteinschleusung.

Angeben eines Kennworts als Microsoft.Secure.String-Objekt

Für einige Vorgänge, z. B. die Sicherung und Wiederherstellung, werden Verschlüsselungsoptionen unterstützt, die aktiviert werden, wenn Sie im Befehl ein Kennwort angeben. Das Angeben des Kennworts weist Analysis Services an, die Sicherungsdatei zu verschlüsseln bzw. zu entschlüsseln. In Analysis Services wird dieses Kennwort als sicheres Zeichenfolgenobjekt instanziiert. Im folgenden Beispiel wird veranschaulicht, wie zur Laufzeit ein Kennwort aus dem Operator erfasst wird.

PS SQLSERVER:\SQLAS\Localhost\default> $pwd = read-host -AsSecureString -Prompt "Password"
Password: ****
PS SQLSERVER:\SQLAS\Localhost\default> $pwd -is [System.IDisposable] 
True

Sie können eine verschlüsselte Datenbankdatei jetzt sichern oder wiederherstellen, indem Sie die Variable $pwd an den Kennwortparameter übergeben. Ein vollständiges Beispiel, in dem diese Darstellung mit anderen Cmdlets kombiniert wird, finden Sie unter Backup-ASDatabase-Cmdlet und Restore-ASDatabase-Cmdlet.

Anschließend entfernen Sie sowohl das Kennwort als auch die Variable aus der Sitzung.

PS SQLSERVER:\SQLAS\Localhost\default> $pwd.Dispose()
PS SQLSERVER:\SQLAS\Localhost\default> Remove-Variable -Name pwd

Analysis Services PowerShell-Tasks

Sie können Analysis Services PowerShell von der Windows PowerShell-Verwaltungsshell oder einer Windows-Eingabeaufforderung ausführen. Das Ausführen der Analysis Services PowerShell in SQL Server Management Studio wird nicht unterstützt.

In diesem Abschnitt werden häufige Tasks für die Verwendung von Analysis Services PowerShell beschrieben.

  • Laden des Analysis Services-Anbieters und der Cmdlets

  • Aktivieren von Remoteverwaltung und Dateifreigabe

  • Herstellen einer Verbindung mit einem Analysis Services-Objekt

  • Verwalten des Dienstes

  • Aufrufen von Hilfe für Analysis Services PowerShell

Laden des Analysis Services-Anbieters und der Cmdlets

Der Analysis Services-Anbieter ist eine Erweiterung des SQL Server-Stammanbieters, der verfügbar wird, wenn Sie das SQLPS-Modul importieren. Analysis Services-Cmdlets werden gleichzeitig geladen; Sie können sie auch separat laden, wenn Sie sie ohne den Anbieter verwenden möchten.

  • Führen Sie das Import-module-Cmdlet aus, um SQLPS zu laden, das die ganze Analysis Services PowerShell-Funktionalität umfasst. Wenn Sie das Modul nicht importieren können, können Sie die Ausführungsrichtlinie vorübergehend zu "uneingeschränkt" ändern, um das Modul zu laden. Weitere Informationen finden Sie unter Importieren des SQLPS-Moduls.

    Import-module “sqlps”
    

    Verwenden Sie alternativ import-module “sqlps” –disablenamechecking, um die Warnung zu nicht genehmigten ausführlichen Namen zu unterdrücken.

  • Wenn Sie nur die taskspezifischen Analysis Services-Cmdlets ohne den Analysis Services-Anbieter oder das Invoke-ASCmd-Cmdlet laden möchten, können Sie das SQLASCmdlets-Modul als unabhängigen Vorgang laden.

    Import-module “sqlascmdlets”
    

Aktivieren der Remoteverwaltung

Bevor Sie Analysis Services PowerShell mit einer Remote-Analysis Services-Instanz verwenden können, müssen Sie zuerst die Remoteverwaltung und die Dateifreigabe aktivieren. Der folgende Fehler gibt ein Firewallkonfigurationsproblem an: "Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)”.

  1. Überprüfen Sie, ob sowohl lokale als auch Remotecomputer über die SQL Server 2012 Analysis Services (SSAS)-Versionen der Client- und Servertools verfügen.

  2. Öffnen Sie auf dem Remoteserver, der eine Analysis Services-Instanz hostet, TCP-Port 2383 in Windows-Firewall. Wenn Sie Analysis Services als benannte Instanz installiert haben oder einen benutzerdefinierten Port verwenden, ist die Portnummer anders. Weitere Informationen finden Sie unter Konfigurieren der Windows-Firewall, um den Zugriff auf Analysis Services zuzulassen.

  3. Überprüfen Sie auf dem Remoteserver, dass die folgenden Dienste gestartet sind: Remoteprozeduraufrufdienst, (RPC) TCP/IP-NetBIOS Helper-Dienst, Windows-Verwaltungsinstrumentation (WMI)-Dienst, Windows-Remoteverwaltung (WS-Verwaltung)-Dienst.

  4. Starten Sie auf dem Remoteserver das Snap-In Gruppenrichtlinienobjekt-Editor (gpedit.msc).

  5. Öffnen Sie "Computerkonfiguration" > "Administrative Vorlagen" > "Netzwerk" > "Netzwerkverbindungen" >"Windows-Firewall" und dann "Domänenprofil".

  6. Doppelklicken Sie auf Windows-Firewall: Eingehende Remoteverwaltungsausnahme zulassen, wählen Sie Aktiviert aus. Klicken Sie dann auf OK.

  7. Doppelklicken Sie auf Windows-Firewall: Eingehende Ausnahme für Datei- und Druckerfreigabe zulassen, wählen Sie Aktiviert aus, und klicken Sie dann auf OK.

  8. Auf dem lokalen Computer mit den Clienttools verwenden Sie die folgenden Cmdlets, um die Remoteverwaltung zu überprüfen. Ersetzen Sie den remote-server-name-Platzhalter durch den tatsächlichen Servernamen. Lassen Sie den Instanznamen weg, wenn Analysis Services als Standardinstanz installiert ist. Damit der Befehl funktioniert, müssen Sie zuvor das SQLPS-Modul importiert haben.

    PS SQLSERVER:\> cd sqlas
    PS SQLSERVER:\sqlas> cd <remote-server-name\instance-name>
    PS SQLSERVER:\sqlas\<remote-server-name\instance-name> dir
    

In einigen Fällen können zusätzliche Konfigurationsschritte erforderlich sein. Möglicherweise müssen Sie Folgendes am Remoteserver eingeben, bevor Sie von einem anderen Computer Befehle an ihn ausgeben können:

Enable-psremoting

Weitere Informationen zur Remoteverwaltung finden Sie unter About_remote_requirements.

Herstellen einer Verbindung mit einem Analysis Services-Objekt

Der Analysis Services PowerShell-Anbieter unterstützt die Navigation der Analysis Services-Objekthierarchie und legt den Kontext zum Ausführen von Befehlen fest. Der Anbieter ist eine Erweiterung des SQLSERVER-Stammanbieters, die über das SQLPS-Modul verfügbar ist. Nachdem Sie das SQLPS-Modul geladen haben, können Sie im Pfad navigieren.

Sie können eine Verbindung mit einer lokalen oder Remote-Instanz herstellen. Einige Cmdlets können jedoch nur auf einer lokalen Instanz (merge-partition) ausgeführt werden. Sie können eine systemeigene Verbindung oder eine HTTP-Verbindung für Analysis Services-Server verwenden, die Sie für HTTP-Zugriff konfiguriert haben. Die folgenden Abbildungen zeigen den Navigationspfad für systemeigene und HTTP-Verbindungen an. Die folgenden Abbildungen zeigen den Navigationspfad für systemeigene und HTTP-Verbindungen an.

Systemeigene Verbindungen zu Analysis Services

Systemeigene Verbindung mit Analysis Services

Das folgende Beispiel zeigt, wie eine systemeigene Verbindung verwendet wird, um durch die Objekthierarchie zu navigieren. Vom Anbieter aus können Sie dir ausgeben, um Instanzinformationen anzuzeigen. Sie können Objekte dieser Instanz mithilfe von cd anzeigen.

PS SQLSERVER:> cd sqlas
PS SQLSERVER\sqlas:> dir
PS SQLSERVER\sqlas:> cd localhost\default
PS SQLSERVER\sqlas\localhost\default:> dir

Sie sollten die folgenden Auflistungen sehen: Assemblys, Datenbanken, Rollen und Ablaufverfolgungen. Wenn Sie weiterhin cd und dir verwenden, können Sie den Inhalt der einzelnen Auflistungen anzeigen.

HTTP-Verbindungen zu Analysis Services

HTTP-Verbindung mit Analysis Services

HTTP-Verbindungen sind nützlich, wenn Sie den Server anhand der Anweisungen im Thema Konfigurieren von HTTP-Zugriff auf Analysis Services unter Internetinformationsdienste (IIS) 7.0 für den HTTP-Zugriff konfiguriert haben.

Bei einer Server-URL "https://localhost/olap/msmdpump.dll" kann eine Verbindung wie folgt aussehen:

PS SQLSERVER\sqlas:> cd http_ds
PS SQLSERVER\sqlas\http_ds:> $Url=Encode-SqlName “https://localhost/olap/msmdpump.dll”
PS SQLSERVER\sqlas\http_ds:> cd $Url
PS SQLSERVER\sqlas\http_ds\http%3A%2F%2Flocalhost%2olap%2msmdpump%2Edll:> dir

Sie sollten die folgenden Auflistungen sehen: Assemblys, Datenbanken, Rollen und Ablaufverfolgungen. Wenn Sie den Inhalt dieser Auflistungen nicht anzeigen können, prüfen Sie die Authentifizierungseinstellungen im virtuellen OLAP-Verzeichnis. Stellen Sie sicher, dass der anonyme Zugriff deaktiviert ist. Wenn Sie Windows-Authentifizierung verwenden, stellen Sie sicher, dass das Windows-Benutzerkonto über Administratorberechtigungen für die Analysis Services-Instanz verfügt.

Verwalten des Dienstes

Überprüfen Sie, ob der Dienst ausgeführt wird. Gibt Status, Namen und Anzeigenamen für SQL Server-Dienste zurück, einschließlich Analysis Services (MSSQLServerOLAPService) und Datenbankmodul.

Get-service mssql*

Gibt Eigenschaften zu einem Prozess zurück, einschließlich Prozess-ID, Handleanzahl und Speicherauslastung:

Get-process msmdsrv

Startet den Dienst neu, wenn Sie das folgende Cmdlet über die Administratorshell ausgeben:

Restart-service mssqlserverolapservice

Aufrufen von Hilfe für Analysis Services PowerShell

Verwenden Sie ein beliebiges der folgenden Cmdlets, um Cmdlet-Verfügbarkeit zu überprüfen und weitere Informationen zu Diensten, Prozessen und Objekten abzurufen.

  1. Get-help gibt die integrierte Hilfe für ein Analysis Services-Cmdlet zurück, einschließlich Beispielen:

    Get-help invoke-ascmd -examples
    
  2. Get-command gibt eine Liste der elf Analysis Services PowerShell-Cmdlets zurück:

    get-command –module SQLASCmdlets
    
  3. Get-member gibt Eigenschaften oder Methoden eines Dienstes oder eines Prozesses zurück.

    Get-service mssqlserverolapservice | get-member –type Property
    
    Get-service mssqlserverolapservice | get-member –type Method
    
    Get-process msmdsrv | get-member –type Property
    
  4. Get-member kann verwendet werden, um Eigenschaften oder Methoden eines Objekts (z. B. AMO-Methoden auf dem Serverobjekt) zurückzugeben, wobei der SQLAS-Anbieter zum Angeben der Serverinstanz verwendet wird.

    PS SQLSERVER:\sqlas\localhost\default > $serverObj = New-Object Microsoft.AnalysisServices.Server
    PS SQLSERVER:\sqlas\localhost\default > $serverObj = | get-member –type Method
    
  5. Get-PSdrive gibt eine Liste der Anbieter zurück, die derzeit installiert sind. Wenn Sie das SQLPS-Modul importiert haben, sehen Sie den SQLServer-Anbieter in der Liste (SQLAS ist Teil des SQLServer-Anbieters und wird nie getrennt in der Liste angezeigt):

    Get-PSDrive
    

Siehe auch

Konzepte

Installieren von SQL Server PowerShell

Konfigurieren von HTTP-Zugriff auf Analysis Services unter Internetinformationsdienste (IIS) 7.0

Andere Ressourcen

Verwalten von tabellarischen Modellen mit PowerShell