Share via


PowerShell per Analysis Services

In SQL Server 2012 Analysis Services (SSAS) sono inclusi cmdlet e un provider PowerShell per Analysis Services (SQLAS) in modo che sia possibile utilizzare Windows PowerShell per la navigazione, l'amministrazione e l'esecuzione di una query sugli oggetti di Analysis Services.

PowerShell per Analysis Services è costituito dagli elementi seguenti:

  • Provider per SQLAS utilizzato per la navigazione all'interno della gerarchia AMO (Analysis Management Object).

  • Cmdlet Invoke-ASCmd utilizzato per l'esecuzione di script MDX, DMX o XMLA.

  • Cmdlet specifici dell'attività per operazioni di routine, quali elaborazione, gestione dei ruoli, gestione delle partizioni, nonché per backup e ripristino.

Contenuto dell'articolo

Prerequisiti

Versioni e modalità supportate di Analysis Services

Requisiti di autenticazione e considerazioni sulla sicurezza

Attività di PowerShell per Analysis Services

Per ulteriori informazioni relative alla sintassi ed esempi, vedere Guida di riferimento a PowerShell per Analysis Services.

Prerequisiti

È necessario installare Windows PowerShell 2.0. Questa applicazione è installata per impostazione predefinita nelle versioni più recenti dei sistemi operativi Windows. Per ulteriori informazioni, vedere Installare Windows PowerShell 2.0.

È necessario installare una funzionalità di SQL Server che include il modulo SQL Server PowerShell (SQLPS) e librerie client. Il modo più semplice per effettuare questa operazione consiste nell'installare SQL Server Management Studio che include automaticamente la funzionalità PowerShell e librerie client. Nel modulo SQL Server PowerShell (SQLPS) sono inclusi tutti i cmdlet e i provider PowerShell per tutte le funzionalità di SQL Server, tra cui il modulo SQLASCmdlets e il provider SQLAS utilizzati per la navigazione nella gerarchia di oggetti di Analysis Services.

Per utilizzare il provider e i cmdlet SQLAS, è necessario importare il modulo SQLPS. Il provider SQLAS è un'estensione dal provider SQLServer. Sono disponibili diversi modi per importare il modulo SQLPS. Per ulteriori informazioni, vedere Importare il modulo SQLPS.

Per l'accesso remoto a un'istanza di Analysis Services è necessaria l'abilitazione dell'amministrazione remota e la condivisione di file. Per ulteriori informazioni, vedere Enable Remote Administration in questo argomento.

Versioni e modalità supportate di Analysis Services

Attualmente, PowerShell per Analysis Services è supportato in qualsiasi edizione di SQL Server 2012 Analysis Services in esecuzione in Windows Server 2008 R2, Windows Server 2008 SP1 o Windows 7.

Nella tabella seguente viene mostrata la disponibilità di PowerShell per Analysis Services in contesti diversi.

Contesto

Disponibilità della funzionalità PowerShell

Istanze e database multidimensionali

Supportata per l'amministrazione locale e remota.

La partizione di tipo merge richiede una connessione locale.

Istanze e database tabulari

Supportata per l'amministrazione locale e remota.

Per ulteriori informazioni, vedere il post sulla gestione di modelli tabulari tramite PowerShell.

Database e istanze di PowerPivot per SharePoint

Supporto limitato. È possibile utilizzare connessioni HTTP e il provider per SQLAS per visualizzare informazioni sulle istanze e sui database.

Tuttavia, l'utilizzo che i cmdlet non è supportato. Non utilizzare PowerShell per Analysis Services per eseguire il backup e ripristino in memoria del database PowerPivot, né aggiungere o rimuovere ruoli, elaborare dati o eseguire script XMLA arbitrario.

Per scopi di configurazione, in PowerPivot per SharePoint è disponibile il supporto PowerShell predefinito che viene fornito separatamente. Per ulteriori informazioni, vedere Riferimento a PowerPivot per PowerShell di SharePoint.

Connessioni native a cubi locali

"Data Source=c:\backup\test.cub"

Non supportato.

Connessioni HTTP a file di connessione (con estensione bism) di Business Intelligence Semantic Model in SharePoint

"Data Source=https://server/shared_docs/name.bism"

Non supportato.

Connessioni incorporate ai database PowerPivot

"Data Source=$Embedded$"

Non supportato.

Contesto del server locale nelle stored procedure di Analysis Services

"Data Source=*"

Non supportato.

Requisiti di autenticazione e considerazioni sulla sicurezza

Quando si stabilisce la connessione ad Analysis Services, è necessario creare tale connessione utilizzando un'identità utente di Windows. Nella maggior parte dei casi, una connessione viene creata tramite la sicurezza integrata di Windows, dove l'identità dell'utente corrente imposta il contesto di sicurezza nel quale vengono eseguite le operazioni del server. Tuttavia, metodi di autenticazione aggiuntivi diventano disponibili quando si configura l'accesso HTTP ad Analysis Services. In questa sezione viene illustrato in che modo il tipo di connessione determina quali opzioni di autenticazione è possibile utilizzare.

Le connessioni ad Analysis Services sono caratterizzate come connessioni native o come connessioni HTTP. Una connessione nativa è una connessione diretta da un'applicazione client al server. In una sessione di PowerShell, il client PowerShell utilizza il provider OLE DB per Analysis Services per connettersi direttamente a un'istanza di Analysis Services. Una connessione nativa viene sempre creata tramite la sicurezza integrata di Windows, dove PowerShell per Analysis Services viene eseguito come utente corrente. In Analysis Services non è supportata la rappresentazione. Se si desidera eseguire un'operazione come utente specifico, è necessario avviare la sessione di PowerShell con il nome di tale utente.

Le connessioni HTTP vengono effettuate indirettamente tramite IIS, consentendo l'utilizzo di opzioni di autenticazione aggiuntive, ad esempio l'autenticazione di base, per connettersi a un'istanza di Analysis Services. Poiché in IIS è supportata la rappresentazione, è possibile fornire una stringa di connessione che includa le credenziali utilizzate da IIS per la rappresentazione quando viene stabilita una connessione. Per fornire le credenziali, è possibile utilizzare il parametro -Credential.

Utilizzo del parametro –Credential in PowerShell

Il parametro –Credential accetta un oggetto PSCredential che specifica un nome utente e una password. In PowerShell per Analysis Services il parametro –Credential è disponibile per i cmdlet che effettuano una richiesta di connessione ad Analysis Services, a differenza dei cmdlet eseguiti nel contesto di una connessione esistente. I cmdlet che effettuano una richiesta di connessione includono Invoke-ASCmd, Backup-ASDatabase e Restore-ASDatabase. Per questi cmdlet può essere utilizzato il parametro –Credential a condizione che vengano soddisfatti i seguenti criteri:

  1. Il server viene configurato per l'accesso HTTP, ovvero in IIS viene gestita la connessione, vengono letti il nome utente e la password e viene rappresentata l'identità di tale utente durante la connessione ad Analysis Services. Per ulteriori informazioni, vedere Configurare l'accesso HTTP ad Analysis Services in Internet Information Services (IIS) 7.0.

  2. La directory virtuale IIS creata per accesso HTTP ad Analysis Services viene configurata per l'autenticazione di base.

  3. Il nome utente e la password forniti dall'oggetto Credential vengono risolti nell'identità di un utente di Windows. Questa identità viene utilizzata in Analysis Services come utente corrente. Se l'utente non è un utente di Windows, o non dispone di autorizzazioni sufficienti per eseguire l'operazione richiesta, la richiesta non verrà completata.

Per creare un oggetto Credential, è possibile utilizzare il cmdlet Get-Credential per raccogliere le credenziali dall'operatore. È quindi possibile utilizzare l'oggetto Credential in un comando che stabilisce la connessione ad Analysis Services. Nell'esempio seguente vien illustrato un approccio. In questo esempio la connessione viene stabilita a un'istanza locale configurata per l'accesso HTTP.

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

Quando si utilizza l'autenticazione di base, è necessario utilizzare sempre HTTPS con SSL in modo che nome utente e password vengano inviati su una connessione crittografata. Per ulteriori informazioni, vedere Configurazione di Secure Sockets Layer in IIS 7 e Configurare l'autenticazione di base (IIS 7).

Ricordare che credenziali, query e comandi forniti in PowerShell vengono passati invariati al livello di trasporto. L'inclusione di contenuto riservato negli script aumenta il rischio di un attacco di tipo injection dannoso.

Indicazione di una password come oggetto Microsoft.Secure.String

Alcune operazioni, ad esempio backup e ripristino, supportano opzioni di crittografia che vengono attivate quando si specifica una password nel comando. La password indica ad Analysis Services di crittografare o decrittografare il file di backup. In Analysis Services viene creata un'istanza di questa password come oggetto stringa sicura. Nell'esempio seguente viene illustrato come raccogliere una password dall'operatore in fase di esecuzione.

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

È possibile a questo punto eseguire il backup o ripristinare un file di database crittografato, passando la variabile $pwd al parametro password. Per visualizzare un esempio completo che combina quanto illustrato con gli altri cmdlet, vedere Cmdlet Backup-ASDatabase e Cmdlet Restore-ASDatabase.

Come passaggio di completamento, rimuovere sia la password che la variabile dalla sessione.

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

Attività di PowerShell per Analysis Services

È possibile eseguire PowerShell per Analysis Services dalla shell di gestione di Windows PowerShell o da un prompt dei comandi di Windows. L'esecuzione di PowerShell per Analysis Services da SQL Server Management Studio non è supportata.

In questa sezione vengono descritte le attività comuni per l'utilizzo di PowerShell per Analysis Services.

  • Caricare i cmdlet e il provider per Analysis Services

  • Abilitare l'amministrazione remota e la condivisione di file

  • Connettersi a un oggetto di Analysis Services

  • Amministrare il servizio

  • Ottenere la Guida per PowerShell per Analysis Services

Caricare i cmdlet e il provider per Analysis Services

Il provider per Analysis Services è un'estensione del provider radice per SQL Server disponibile quando si importa il modulo SQLPS. I cmdlet di Analysis Services vengono caricati contemporaneamente. È possibile caricarli anche in modo indipendente se si desidera utilizzarli senza il provider.

  • Eseguire il cmdlet Import-module per caricare SQLPS in cui sono incluse tutte le funzionalità di PowerShell per Analysis Services. Se non è possibile importare il modulo, è possibile impostare temporaneamente i criteri di esecuzione su senza limitazioni relativamente al caricamento del modulo. Per ulteriori informazioni, vedere Importare il modulo SQLPS.

    Import-module “sqlps”
    

    In alternativa, utilizzare import-module “sqlps” –disablenamechecking per eliminare l'avviso sui nomi di verbi non approvati.

  • Per caricare solo i cmdlet di Analysis Services per attività specifiche, senza il provider Analysis Services o il cmdlet Invoke-ASCmd, è possibile caricare il modulo SQLASCmdlets come operazione indipendente.

    Import-module “sqlascmdlets”
    

Abilitare l'amministrazione remota

Prima che sia possibile utilizzare PowerShell per Analysis Services con un'istanza di Analysis Services remota, è necessario abilitare innanzitutto l'amministrazione remota e la condivisione di file. L'errore seguente indica un problema di configurazione del firewall: "Server RPC non disponibile. (Eccezione da HRESULT: 0x800706BA)".

  1. Verificare che sia il computer locale sia quello remoto dispongano delle versioni di SQL Server 2012 Analysis Services (SSAS) degli strumenti client e server.

  2. Nel server remoto in cui viene ospitata un'istanza di Analysis Services, aprire la porta TCP 2383 in Windows Firewall. Se Analysis Services è installato come istanza denominata o si utilizza una porta personalizzata, il numero di porta sarà diverso. Per ulteriori informazioni, vedere Configurare Windows Firewall per consentire l'accesso ad Analysis Services.

  3. Nel server remoto verificare che siano avviati i servizi seguenti: RPC (Remote Procedure Control), Helper NetBIOS di TCP/IP, Strumentazione gestione Windows (WMI), Gestione remota Windows (WS-Management).

  4. Nel server remoto avviare lo snap-in Editor oggetti Criteri di gruppo (gpedit.msc).

  5. Aprire Configurazione computer, Modelli amministrativi, Rete, Connessioni di rete, Windows Firewall e Profilo di dominio.

  6. Fare doppio clic su Windows Firewall: consenti eccezione amministrazione remota in ingresso, selezionare Abilitata, quindi scegliere OK.

  7. Fare doppio clic su Windows Firewall: consenti eccezione per condivisione file e stampanti in ingresso, selezionare Abilitata, quindi scegliere OK.

  8. Nel computer locale in cui sono presenti gli strumenti client utilizzare i cmdlet seguenti per verificare l'amministrazione remota, la sostituzione del nome del server effettivo per il segnaposto remote-server-name. Omettere il nome dell'istanza se Analysis Services è installato come istanza predefinita. È necessario aver importato precedentemente il modulo SQLPS affinché il comando venga eseguito correttamente.

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

In alcuni casi potrebbe essere necessaria una configurazione aggiuntiva. Potrebbe essere necessario digitare quanto riportato di seguito nel server remoto prima che sia possibile eseguire comandi per questo server da un altro computer:

Enable-psremoting

Per ulteriori informazioni sull'amministrazione remota, vedere la pagina relativa ad about_remote_requirements.

Connettersi a un oggetto di Analysis Services

Il provider PowerShell per Analysis Services supporta la navigazione all'interno della gerarchia di oggetti di Analysis Services e consente di impostare il contesto per l'esecuzione dei comandi. Il provider è un'estensione del provider radice per SQLSERVER disponibile tramite il modulo SQLPS. Dopo aver caricato questo modulo, è possibile passare al percorso.

È possibile connettersi a un'istanza locale o remota, ma alcuni cmdlet vengono eseguiti solo in un'istanza locale, vale a dire partizione di tipo merge. È possibile utilizzare una connessione nativa o una HTTP per i server Analysis Services configurati per l'accesso HTTP. Nelle illustrazioni seguenti viene mostrato il percorso di navigazione per le connessioni native e HTTP. Nelle illustrazioni seguenti viene mostrato il percorso di navigazione per le connessioni native e HTTP.

Connessioni native ad Analysis Services

Connessione nativa ad Analysis Services

L'esempio seguente è una dimostrazione della modalità di utilizzo di una connessione nativa per spostarsi all'interno di una gerarchia di oggetti. Dal provider è possibile eseguire un comando dir per visualizzare le informazioni sull'istanza. È possibile utilizzare cd per visualizzare gli oggetti di questa istanza.

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

È consigliabile vedere le raccolte Assembly, Database, Ruoli e Tracce. Continuando a utilizzare cd e dir, è possibile visualizzare il contenuto di ciascuna raccolta.

Connessioni HTTP ad Analysis Services

Connessione HTTP ad Analysis Services

Le connessioni HTTP sono utili se è stato configurato il server per l'accesso HTTP utilizzando le istruzioni disponibili nell'argomento Configurare l'accesso HTTP ad Analysis Services in Internet Information Services (IIS) 7.0

Presupponendo un URL del server https://localhost/olap/msmdpump.dll, una connessione potrebbe sembrare analoga alla seguente:

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

È consigliabile vedere le raccolte Assembly, Database, Ruoli e Tracce. Se non è possibile visualizzare il contenuto di queste raccolte, controllare le impostazioni di autenticazione nella directory virtuale OLAP. Verificare che l'accesso anonimo sia disabilitato. Se si utilizza Autenticazione di Windows, assicurarsi che l'account utente di Windows disponga delle autorizzazioni amministrative per l'istanza di Analysis Services.

Amministrare il servizio

Verificare che il servizio sia in esecuzione. Vengono restituiti lo stato, il nome e il nome visualizzato dei servizi SQL Server, inclusi Analysis Services (MSSQLServerOLAPService) e il motore di database.

Get-service mssql*

Vengono restituite le proprietà su un processo, inclusi ID processo, conteggio degli handle e utilizzo della memoria:

Get-process msmdsrv

Viene riavviato il servizio quando il cmdlet riportato di seguito viene eseguito dalla shell dell'amministratore:

Restart-service mssqlserverolapservice

Ottenere la Guida per PowerShell per Analysis Services

Utilizzare alcuni dei cmdlet seguenti per verificare la disponibilità del cmdlet e per ottenere ulteriori informazioni su servizi, processi e oggetti.

  1. Tramite Get-help viene restituita la Guida incorporata per un cmdlet di Analysis Services, tra cui examples:

    Get-help invoke-ascmd -examples
    
  2. Tramite Get-command viene restituito un elenco degli undici cmdlet di PowerShell per Analysis Services:

    get-command –module SQLASCmdlets
    
  3. Tramite Get-member vengono restituiti metodi o proprietà di un servizio o processo.

    Get-service mssqlserverolapservice | get-member –type Property
    
    Get-service mssqlserverolapservice | get-member –type Method
    
    Get-process msmdsrv | get-member –type Property
    
  4. Get-member può essere utilizzato anche per restituire proprietà o metodi di un oggetto, ad esempio metodi AMO nell'oggetto server, utilizzando il provider per SQLAS per specificare l'istanza del server.

    PS SQLSERVER:\sqlas\localhost\default > $serverObj = New-Object Microsoft.AnalysisServices.Server
    PS SQLSERVER:\sqlas\localhost\default > $serverObj = | get-member –type Method
    
  5. Tramite Get-PSdrive viene restituito un elenco dei provider attualmente installati. Se è stato importato il modulo SQLPS, verrà visualizzato il provider per SQLServer nell'elenco. SQLAS è parte del provider per SQLServer e non viene mai visualizzato separatamente nell'elenco:

    Get-PSDrive
    

Vedere anche

Concetti

Installare SQL Server PowerShell

Configurare l'accesso HTTP ad Analysis Services in Internet Information Services (IIS) 7.0

Altre risorse

Post sulla gestione dei modelli tabulari tramite PowerShell