Freigeben über


Analysis Services PowerShell

SQL Server 2014 Analysis Services (SSAS) enthält einen Analysis Services PowerShell (SQLAS)-Anbieter und Cmdlets, sodass Sie mithilfe von Windows PowerShell in Analysis Services-Objekten navigieren, verwalten und abfragen können.

Analysis Services PowerShell besteht aus den folgenden Komponenten:

  • SQLAS Anbieter, der für die Navigation in der AMO-Hierarchie (Analysis Management Object) verwendet wird.

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

  • Aufgabenspezifische Cmdlets für Routinevorgänge, z. B. Verarbeitung, Rollenverwaltung, Partitionsverwaltung, Sicherung und Wiederherstellung.

In diesem Artikel

Voraussetzungen

Unterstützte Versionen und Modi von Analysis Services

Überlegungen zu Authentifizierungsanforderungen und Sicherheit

PowerShell-Aufgaben für Analysis Services

Weitere Informationen zu Syntax und Beispielen finden Sie in der PowerShell-Referenz für Analysis Services.

Voraussetzungen

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

Sie müssen ein SQL Server-Feature installieren, das das SQL Server PowerShell (SQLPS)-Modul und Clientbibliotheken enthält. Am einfachsten installieren Sie SQL Server Management Studio, das die PowerShell-Funktion und Clientbibliotheken automatisch enthält. Das SQL Server PowerShell (SQLPS)-Modul enthält die PowerShell-Anbieter und Cmdlets für alle SQL Server-Features, einschließlich des SQLASCmdlets-Moduls und des SQLAS-Anbieters, der für die Navigation in der Analysis Services-Objekthierarchie verwendet wird.

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

Für den Remotezugriff auf eine Analysis Services-Instanz müssen Sie die Remoteverwaltung und Dateifreigabe aktivieren. Weitere Informationen finden Sie unter "Remoteverwaltung aktivieren" in diesem Thema.

Unterstützte Versionen und Modi von Analysis Services

Derzeit wird Analysis Services PowerShell für jede Edition von SQL Server 2014 Analysis Services unterstützt, die unter Windows Server 2008 R2, Windows Server 2008 SP1 oder Windows 7 ausgeführt wird.

Die folgende Tabelle zeigt die Verfügbarkeit von Analysis Services PowerShell in verschiedenen Kontexten.

Kontext Verfügbarkeit von PowerShell-Features
Multidimensionale Instanzen und Datenbanken Unterstützt für lokale und Fernverwaltung.

Für die Merge-Partition ist eine lokale Verbindung erforderlich.
Tabellarische Instanzen und Datenbanken Unterstützt für die lokale und Remoteverwaltung.

Weitere Informationen finden Sie in einem Blog vom August 2011 zum Verwalten von tabellarischen Modellen mithilfe von PowerShell.
PowerPivot für SharePoint-Instanzen und -Datenbanken Eingeschränkter Support. Sie können HTTP-Verbindungen und den SQLAS-Anbieter verwenden, um Instanz- und Datenbankinformationen anzuzeigen.

Die Verwendung der Cmdlets wird jedoch nicht unterstützt. Sie dürfen nicht Analysis Services PowerShell verwenden, um die PowerPivot-Datenbank im Arbeitsspeicher zu sichern und wiederherzustellen, noch dürfen Rollen, Prozessdaten oder beliebige XMLA-Skripts hinzugefügt oder entfernt werden.

Für Konfigurationszwecke verfügt PowerPivot für SharePoint über integrierte PowerShell-Unterstützung, die separat bereitgestellt wird. Weitere Informationen finden Sie in der PowerShell-Referenz für PowerPivot für SharePoint.
Native Verknüpfungen mit lokalen Würfeln

"Datenquelle=c:\backup\test.cub"
Nicht unterstützt.
HTTP-Verbindungen mit BI-Semantikmodelldateien (.bism) in SharePoint

"Datenquelle=https://server/shared_docs/name.bism"
Nicht unterstützt.
Eingebettete Verbindungen mit PowerPivot-Datenbanken

"Datenquelle=$Embedded$"
Nicht unterstützt.
Lokaler Serverkontext in gespeicherten Prozeduren von Analysis Services

"Datenquelle=*"
Nicht unterstützt.

Überlegungen zu Authentifizierungsanforderungen und Sicherheit

Beim Herstellen einer Verbindung mit Analysis Services müssen Sie die Verbindung mit einer Windows-Benutzeridentität herstellen. In den meisten Fällen wird eine Verbindung mit der integrierten Windows-Sicherheit hergestellt, bei der die Identität des aktuellen Benutzers den Sicherheitskontext festlegt, unter dem Servervorgänge ausgeführt werden. Zusätzliche Authentifizierungsmethoden werden jedoch verfügbar, wenn Sie den HTTP-Zugriff auf Analysis Services konfigurieren. In diesem Abschnitt wird erläutert, wie der Verbindungstyp bestimmt, welche Authentifizierungsoptionen Sie verwenden können.

Verbindungen mit Analysis Services sind entweder als systemeigene Verbindungen oder HTTP-Verbindungen gekennzeichnet. Eine systemeigene Verbindung ist eine direkte Verbindung von einer Clientanwendung mit dem 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 Windows-Sicherheit hergestellt. Dabei wird Analysis Services PowerShell als der aktuell angemeldete Benutzer ausgeführt. Analysis Services unterstützt keinen Identitätswechsel. Wenn Sie einen Vorgang als bestimmten Benutzer ausführen möchten, müssen Sie die PowerShell-Sitzung als diesen Benutzer starten.

HTTP-Verbindungen werden indirekt über IIS hergestellt, sodass zusätzliche Authentifizierungsoptionen wie die Standardauthentifizierung eine Verbindung mit einer Analysis Services-Instanz herstellen können. Da IIS den Identitätswechsel unterstützt, können Sie eine Verbindungszeichenfolge bereitstellen, die Anmeldeinformationen enthält, die IIS zum Identitätswechsel verwendet, wenn eine Verbindung hergestellt wird. Um Anmeldeinformationen bereitzustellen, können Sie den parameter -Credential verwenden.

Verwenden des -Credential-Parameters in PowerShell

Der parameter -Credential akzeptiert ein PSCredential-Objekt, das einen Benutzernamen und ein Kennwort angibt. In Analysis Services PowerShell ist der -Credential Parameter für Cmdlets verfügbar, die eine Verbindungsanforderung an Analysis Services stellen, im Gegensatz zu Cmdlets, die im Kontext einer vorhandenen Verbindung ausgeführt werden. Cmdlets, die eine Verbindungsanforderung stellen, umfassen Invoke-ASCmd, Backup-ASDatabase und Restore-ASDatabase. Für diese Cmdlets kann der -Credential-Parameter verwendet werden, vorausgesetzt, die folgenden Kriterien sind erfüllt:

  1. Der Server ist für den HTTP-Zugriff konfiguriert, was bedeutet, dass IIS die Verbindung verarbeitet, den Benutzernamen und das Kennwort liest und diese Benutzeridentität beim Herstellen einer Verbindung mit Analysis Services imitiert. Weitere Informationen finden Sie unter Configure HTTP Access to Analysis Services on Internet Information Services (IIS) 8.0.

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

  3. Der vom Anmeldeinformationsobjekt bereitgestellte Benutzername und das Kennwort werden in eine Windows-Benutzeridentität überführt. Analysis Services verwendet diese Identität als aktueller Benutzer. Wenn der Benutzer kein Windows-Benutzer ist oder über ausreichende Berechtigungen zum Ausführen des angeforderten Vorgangs verfügt, schlägt die Anforderung fehl.

Zum Erstellen eines Anmeldeinformationsobjekts können Sie das cmdlet Get-Credential verwenden, um die Anmeldeinformationen vom Operator zu sammeln. Anschließend können Sie das Anmeldeinformationsobjekt für einen Befehl verwenden, der eine Verbindung mit Analysis Services herstellt. Im folgenden Beispiel wird ein Ansatz veranschaulicht. In diesem Beispiel ist die Verbindung mit einer lokalen Instanz (SQLSERVER:\SQLAS\HTTP_DS) konfiguriert, die für den HTTP-Zugriff konfiguriert ist.

$cred = Get-Credential adventureworks\dbadmin  
Invoke-ASCmd -Inputfile:"c:\discoverconnections.xmla" -Credential:$cred  

Bei Verwendung der Standardauthentifizierung sollten Sie immer HTTPS mit SSL verwenden, damit Benutzername und Kennwörter über eine verschlüsselte Verbindung gesendet werden. Weitere Informationen finden Sie unter Konfigurieren der Secure Sockets Layer in IIS 7.0 und Configure Basic Authentication (IIS 7).For more information, see Configure Secure Sockets Layer in IIS 7.0 and Configure Basic Authentication (IIS 7).

Denken Sie daran, dass Anmeldeinformationen, Abfragen und Befehle, die Sie in PowerShell bereitstellen, unverändert an die Transportebene übergeben werden. Das Einschließen vertraulicher Inhalte in Ihre Skripts erhöht das Risiko einer böswilligen Injektion.

Bereitstellen eines Kennworts als Microsoft.Secure.String-Objekt

Einige Vorgänge, z. B. Sicherung und Wiederherstellung, unterstützen Verschlüsselungsoptionen, die aktiviert werden, wenn Sie ein Kennwort im Befehl angeben. Bereitstellung des Passworts signalisiert den Analysis-Diensten, die Sicherungsdatei zu verschlüsseln oder zu entschlüsseln. In Analysis Services wird dieses Kennwort als sicheres Zeichenfolgenobjekt instanziiert. Das folgende Beispiel zeigt, wie Sie zur Laufzeit ein Kennwort vom Operator sammeln.

$pwd = read-host -AsSecureString -Prompt "Password"  
$pwd -is [System.IDisposable]  

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

Entfernen Sie als Nachverfolgungsschritt sowohl das Kennwort als auch die Variable aus der Sitzung.

$pwd.Dispose()  
Remove-Variable -Name pwd  

PowerShell-Aufgaben für Analysis Services

Sie können Analysis Services PowerShell über die Windows PowerShell-Verwaltungsshell oder eine Windows-Eingabeaufforderung ausführen. Das Ausführen von Analysis Services PowerShell aus SQL Server Management Studio wird nicht unterstützt.

In diesem Abschnitt werden allgemeine Aufgaben für die Verwendung von Analysis Services PowerShell beschrieben.

Laden des Analysis Services-Anbieters und der Cmdlets

Der Analysis Services-Anbieter ist eine Erweiterung des SQL Server-Stammanbieters, der beim Importieren des SQLPS-Moduls verfügbar wird. Analysis Services-Cmdlets werden gleichzeitig geladen. Sie können sie auch unabhängig laden, wenn Sie sie ohne den Anbieter verwenden möchten.

  • Führen Sie das Cmdlet Import-Module aus, um SQLPS zu laden, das alle PowerShell-Funktionen von Analysis Services enthält. Wenn Sie das Modul nicht importieren können, können Sie die Ausführungsrichtlinie vorübergehend in "uneingeschränkt" ändern, um das Modul zu laden. Weitere Informationen finden Sie unter Importieren des SQLPS-Moduls.

    Import-Module "sqlps"  
    

    Alternativ können Sie die Warnung zu nicht genehmigten Verbnamen mit import-module "sqlps" -disablenamechecking unterdrücken.

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

    Import-Module "sqlascmdlets"  
    

Remoteverwaltung aktivieren

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

  1. Stellen Sie sicher, dass sowohl lokale als auch Remotecomputer über die SQL Server 2014 Analysis Services (SSAS)-Versionen der Client- und Servertools verfügen.

  2. Öffnen Sie auf dem Remoteserver, auf dem eine Analysis Services-Instanz gehostet wird, den TCP-Port 2383 in der Windows-Firewall. Wenn Sie Analysis Services als benannte Instanz installiert haben oder einen benutzerdefinierten Port verwenden, unterscheidet sich die Portnummer. Weitere Informationen finden Sie unter Konfigurieren der Windows-Firewall zum Zulassen des Analysis Services-Zugriffs.

  3. Überprüfen Sie auf dem Remoteserver, ob die folgenden Dienste gestartet werden: RemoteProzeduraufruf (RPC)-Dienst, TCP/IP NetBIOS-Hilfsdienst, Windows Management Instrumentation (WMI)-Dienst, Windows Remote Management (WS-Management) Dienst.

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

  5. Öffnen Sie computerkonfiguration, öffnen Sie administrative Vorlagen, öffnen Sie Netzwerk, öffnen Sie Netzwerkverbindungen, öffnen Sie die Windows-Firewall, und öffnen Sie dann das Domänenprofil.

  6. Doppelklicken Sie auf die Windows-Firewall: Ausnahme für die eingehende Remoteverwaltung zulassen, wählen Sie "Aktiviert" aus, und klicken Sie dann auf "OK".

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

  8. Verwenden Sie auf dem lokalen Computer, der die Client-Tools enthält, die folgenden Cmdlets, um die Remoteverwaltung zu überprüfen, indem Sie den tatsächlichen Servernamen anstelle des Platzhalters für den Remoteservernamen verwenden. Lassen Sie den Instanznamen aus, wenn Analysis Services als Standardinstanz installiert ist. Sie müssen das SQLPS-Modul zuvor importiert haben, damit der Befehl funktioniert.

    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 kann eine zusätzliche Konfiguration erforderlich sein. Möglicherweise müssen Sie Folgendes auf dem Remoteserver eingeben, bevor Sie Befehle von einem anderen Computer aus ausgeben können:

Enable-PSRemoting  

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 für die Ausführung von Befehlen fest. Der Anbieter ist eine Erweiterung des SQLSERVER-Stammanbieters, der ü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 Remoteinstanz herstellen, aber einige cmdlets laufen nur auf einer lokalen Instanz, nämlich Merge-Partition. Sie können eine systemeigene Verbindung oder eine HTTP-Verbindung für Analysis Services-Server verwenden, die Sie für den HTTP-Zugriff konfiguriert haben. Die folgenden Abbildungen zeigen den Navigationspfad für systemeigene und HTTP-Verbindungen. Die folgenden Abbildungen zeigen den Navigationspfad für systemeigene und HTTP-Verbindungen.

Systemeigene Verbindungen mit Analysis Services

Native Verbindung zu Analysis Services

Das folgende Beispiel zeigt, wie sie eine systemeigene Verbindung zum Navigieren in der Objekthierarchie verwenden. Vom Anbieter können Sie eine dir ausstellen, um Instanzeninformationen anzuzeigen. Sie können zum Anzeigen von Objekten dieser Instanz verwenden cd .

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

Die folgenden Auflistungen sollten angezeigt werden: Assemblies, Datenbanken, Rollen und Traces. Indem Sie weiterhin cd und dir verwenden, können Sie den Inhalt jeder Sammlung anzeigen.

HTTP-Verbindungen mit Analysis Services

HTTP-Verbindung zu Analysis Services

HTTP-Verbindungen sind nützlich, wenn Sie Ihren Server für den HTTP-Zugriff mithilfe der Anweisungen in diesem Thema konfiguriert haben: Konfigurieren des HTTP-Zugriffs auf Analysis Services für Internetinformationsdienste (IIS) 8.0

Unter der Annahme einer Server-URL von https://localhost/olap/msmdpump.dll könnte 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  

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

Verwalten des Diensts

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

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 aus der Administratorshell ausgeben:

Restart-Service mssqlserverolapservice  

Hilfe zu Analysis Services PowerShell abrufen

Verwenden Sie eines der folgenden Cmdlets, um die Verfügbarkeit von Cmdlets zu überprüfen und weitere Informationen zu Diensten, Prozessen und Objekten zu erhalten.

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

    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 Diensts oder 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 auch verwendet werden, um Eigenschaften oder Methoden eines Objekts (z. B. AMO-Methoden auf dem Serverobjekt) mithilfe des SQLAS-Anbieters zur Angabe der Serverinstanz zurückzugeben.

    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, wird der SQLServer Anbieter in der Liste angezeigt (SQLAS ist Teil des SQLServer-Anbieters und wird nie separat in der Liste angezeigt):

    Get-PSDrive  
    

Siehe auch

Installieren von SQL Server PowerShell
Verwalten von tabellarischen Modellen mithilfe von PowerShell (Blog)
Konfigurieren des HTTP-Zugriffs auf Analysis Services für Internetinformationsdienste (IIS) 8.0