Analysis Services PowerShell
SQL Server 2014 Analysis Services (SSAS) enthält einen Analysis Services PowerShell-Anbieter (SQLAS) und Cmdlets, sodass Sie Windows PowerShell zum Navigieren, Verwalten und Abfragen von Analysis Services-Objekten verwenden 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
Unterstützte Versionen und Modi von Analysis Services
Authentifizierungsanforderungen und Sicherheitsüberlegungen
Analysis Services PowerShell-Tasks
Weitere Informationen zu Syntax und Beispielen finden Sie unter Analysis Services PowerShell-Referenz.
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 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.
Sie müssen das SQLPS-Modul importieren, bevor Sie den Anbieter und die SQLAS
Cmdlets verwenden können. 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 unter Aktivieren der Remoteverwaltung in diesem Thema.
Unterstützte Versionen und Modi von Analysis Services
Derzeit wird Analysis Services PowerShell in jeder Edition von SQL Server 2014 Analysis Services unter Windows Server 2008 R2, Windows Server 2008 SP1 oder Windows 7 unterstützt.
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 in einem Blog vom August 2011 zum Verwalten von tabellarischen Modellen mithilfe von 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 PowerShell-Referenz für PowerPivot für SharePoint. |
Systemeigene Verbindungen zu lokalen Cubes "Data Source=c:\backup\test.cub" |
Wird nicht unterstützt. |
HTTP-Verbindungen zu BI-Semantikmodell-Verbindungsdateien (.bism) in SharePoint "Datenquelle=https://server/shared_docs/name.bism" |
Wird nicht unterstützt. |
Eingebettete Verbindungen zu PowerPivot-Datenbanken "Data Source=$Embedded$" |
Wird nicht unterstützt. |
Lokaler Serverkontext in gespeicherten Prozeduren für Analysis Services "Datenquelle=*" |
Wird 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 Parameter -Credential verwenden.
Verwenden des Parameters "-Credential" in PowerShell
Der Parameter -Credential akzeptiert ein PSCredential-Objekt, das einen Benutzernamen und ein Kennwort angibt. In Analysis Services PowerShell ist der Parameter -Credential für Cmdlets verfügbar, die eine Verbindungsanforderung an Analysis Services senden, im Gegensatz zu Cmdlets, die im Kontext 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 Parameter -Credential verwendet werden, sofern die folgenden Kriterien erfüllt sind:
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 des HTTP-Zugriffs auf Analysis Services unter Internetinformationsdienste (IIS) 8.0.
Das virtuelle IIS-Verzeichnis, das für Analysis Services-HTTP-Zugriff erstellt wurde, ist für die Standardauthentifizierung konfiguriert.
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 besteht die Verbindung mit einem lokalen instance (SQLSERVER:\SQLAS\HTTP_DS
), der für den HTTP-Zugriff konfiguriert ist.
$cred = Get-Credential adventureworks\dbadmin
Invoke-ASCmd -Inputfile:"c:\discoverconnections.xmla" -Credential:$cred
Wenn Sie die Standardauthentifizierung verwenden, 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 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.
$pwd = read-host -AsSecureString -Prompt "Password"
$pwd -is [System.IDisposable]
Sie können eine verschlüsselte Datenbankdatei jetzt sichern oder wiederherstellen, indem Sie die Variable $pwd an den Kennwortparameter übergeben. Ein vollständiges Beispiel, das diese Abbildung mit anderen Cmdlets kombiniert, finden Sie unter Cmdlet Backup-ASDatabase und Restore-ASDatabase cmdlet.
Anschließend entfernen Sie sowohl das Kennwort als auch die Variable aus der Sitzung.
$pwd.Dispose()
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 von Analysis Services PowerShell über 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
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 weist auf ein Firewallkonfigurationsproblem hin: "Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)".
Vergewissern Sie sich, dass sowohl lokale Computer als auch Remotecomputer über die SQL Server Analysis Services-Versionen (SSAS) von 2014 verfügen.
Ö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 Configure the Windows Firewall to Allow Analysis Services Access.
Stellen Sie auf dem Remoteserver sicher, dass die folgenden Dienste gestartet wurden: Rpc-Dienst (Remote Procedure Call), TCP/IP NetBIOS Helper Service, WMI-Dienst (Windows Management Instrumentation), Windows Remote Management Management Service (WS-Management).
Starten Sie auf dem Remoteserver das Snap-In Gruppenrichtlinienobjekt-Editor (gpedit.msc).
Öffnen Sie "Computerkonfiguration" > "Administrative Vorlagen" > "Netzwerk" > "Netzwerkverbindungen" >"Windows-Firewall" und dann "Domänenprofil".
Doppelklicken Sie auf Windows-Firewall: Ausnahme für eingehende Remoteverwaltung zulassen, wählen Sie Aktiviert aus, und klicken Sie dann auf OK.
Doppelklicken Sie auf Windows-Firewall: Ausnahme für eingehende Datei- und Druckerfreigabe zulassen, wählen Sie Aktiviert aus, und klicken Sie dann auf OK.
Verwenden Sie auf dem lokalen Computer mit den Clienttools die folgenden Cmdlets, um die Remoteverwaltung zu überprüfen, und ersetzen Sie den tatsächlichen Servernamen durch den Platzhalter remote-server-name . 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
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
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-Verbindungen sind nützlich, wenn Sie Ihren Server für den HTTP-Zugriff mithilfe der Anweisungen in diesem Thema konfigurieren: Konfigurieren des HTTP-Zugriffs auf Analysis Services in Internetinformationsdienste (IIS) 8.0
Angenommen, eine 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
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 Datenbank-Engine.
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.
Get-Help
gibt die integrierte Hilfe für ein Analysis Services-Cmdlet zurück, einschließlich Beispielen:Get-Help invoke-ascmd -Examples
Get-Command
gibt eine Liste der elf Analysis Services PowerShell-Cmdlets zurück:Get-Command -module SQLASCmdlets
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
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
Get-PSdrive
gibt eine Liste der Anbieter zurück, die derzeit installiert sind. Wenn Sie das SQLPS-Modul importiert haben, sehen Sie denSQLServer
-Anbieter in der Liste (SQLAS ist Teil des SQLServer-Anbieters und wird nie getrennt in der Liste angezeigt):Get-PSDrive
Weitere Informationen
Installieren von SQL Server PowerShell
Verwalten von tabellarischen Modellen mithilfe von PowerShell (Blog)
Konfigurieren von HTTP-Zugriff auf Analysis Services unter Internetinformationsdienste (IIS) 8.0