Compartilhar via


Analysis Services PowerShell

O SSAS (SQL Server 2014 Analysis Services) inclui um provedor e cmdlets do SQLAS (Analysis Services PowerShell) para que você possa usar o Windows PowerShell para navegar, administrar e consultar objetos do Analysis Services.

O Analysis Services PowerShell consiste no seguinte:

  • SQLAS provedor usado para navegar na hierarquia AMO (Objeto de Gerenciamento de Análise).

  • Invoke-ASCmd cmdlet usado para executar script MDX, DMX ou XMLA.

  • Cmdlets específicos da tarefa para operações de rotina, como processamento, gerenciamento de funções, gerenciamento de partições, backup e restauração.

Neste artigo

Pré-requisitos

Versões e modos com suporte do Analysis Services

Requisitos de autenticação e considerações de segurança

Tarefas do PowerShell do Analysis Services

Para obter mais informações sobre sintaxe e exemplos, consulte a Referência do PowerShell do Analysis Services.

Pré-requisitos

O Windows PowerShell 2.0 deve ser instalado. Ele é instalado por padrão em versões mais recentes dos sistemas operacionais Windows. Para obter mais informações, consulte Instalar o Windows PowerShell 2.0

Você deve instalar um recurso do SQL Server que inclui o módulo SQL Server PowerShell (SQLPS) e bibliotecas de cliente. A maneira mais fácil de fazer isso é instalando o SQL Server Management Studio, que inclui automaticamente o recurso do PowerShell e as bibliotecas de clientes. O módulo SQLPS (SQL Server PowerShell) contém os provedores e cmdlets do PowerShell para todos os recursos do SQL Server, incluindo o módulo SQLASCmdlets e o provedor SQLAS utilizados para explorar a hierarquia de objetos do Analysis Services.

Você deve importar o módulo SQLPS antes de poder usar o provedor e os SQLAS cmdlets. O provedor SQLAS é uma extensão do SQLServer provedor. Há várias maneiras de importar o módulo SQLPS. Para obter mais informações, consulte Importar o módulo SQLPS.

O acesso remoto a uma instância do Analysis Services requer que você habilite a administração remota e o compartilhamento de arquivos. Para obter mais informações, consulte Habilitar Administração Remota neste tópico.

Versões e modos com suporte do Analysis Services

Atualmente, o Analysis Services PowerShell tem suporte em qualquer edição do SQL Server 2014 Analysis Services em execução no Windows Server 2008 R2, Windows Server 2008 SP1 ou Windows 7.

A tabela a seguir mostra a disponibilidade do Analysis Services PowerShell em contextos diferentes.

Contexto Disponibilidade de Recursos do PowerShell
Instâncias multidimensionais e bancos de dados Com suporte para administração local e remota.

A mesclagem requer uma conexão local.
Instâncias de tabela e bancos de dados Com suporte para administração local e remota.

Para obter mais informações, consulte um blog de agosto de 2011 sobre Como gerenciar modelos de tabela usando o PowerShell.
PowerPivot para instâncias e bancos de dados do SharePoint Suporte limitado. Você pode usar conexões HTTP e o provedor SQLAS para exibir informações de instância e banco de dados.

No entanto, não há suporte para o uso dos cmdlets. Você não deve usar o Analysis Services PowerShell para fazer backup e restaurar o banco de dados PowerPivot na memória, nem adicionar ou remover funções, processar dados ou executar um script XMLA arbitrário.

Para fins de configuração, o PowerPivot para SharePoint tem suporte interno do PowerShell fornecido separadamente. Para obter mais informações, consulte Referência do PowerShell para PowerPivot para SharePoint.
Conexões nativas com cubos locais

"Data Source=c:\backup\test.cub"
Não há suporte.
Conexões HTTP com arquivos de conexão de modelo semântico de BI (.bism) no SharePoint

"Fonte de dados=https://server/shared_docs/name.bism"
Não há suporte.
Conexões incorporadas para bancos de dados PowerPivot

"Fonte de Dados=$Embedded$"
Não há suporte.
Contexto do servidor local nos procedimentos armazenados do Analysis Services

"Fonte de dados=*"
Não há suporte.

Requisitos de autenticação e considerações de segurança

Ao se conectar ao Analysis Services, você deve fazer a conexão usando uma identidade de usuário do Windows. Na maioria das vezes, uma conexão é feita usando a segurança integrada do Windows, em que a identidade do usuário atual define o contexto de segurança no qual as operações de servidor são executadas. No entanto, métodos de autenticação adicionais ficam disponíveis quando você configura o acesso HTTP ao Analysis Services. Esta seção explica como o tipo de conexão determina quais opções de autenticação você pode usar.

As conexões com o Analysis Services são caracterizadas como conexões nativas ou conexões HTTP. Uma conexão nativa é uma conexão direta de um aplicativo cliente para o servidor. Em uma sessão do PowerShell, o cliente do PowerShell usa o provedor OLE DB para o Analysis Services para se conectar diretamente a uma instância do Analysis Services. Uma conexão nativa é sempre feita usando a segurança integrada do Windows, em que o Analysis Services PowerShell é executado como o usuário atual. O Analysis Services não dá suporte à impersonação. Se você quiser executar uma operação como um usuário específico, deverá iniciar a sessão do PowerShell como esse usuário.

As conexões HTTP são feitas indiretamente por meio do IIS, permitindo que opções de autenticação adicionais, como autenticação Básica, se conectem a uma instância do Analysis Services. Como o IIS dá suporte à representação, você pode fornecer uma cadeia de conexão que inclui credenciais que o IIS usará para representar ao fazer uma conexão. Para fornecer credenciais, você pode usar o parâmetro -Credential.

Usando o parâmetro -Credential no PowerShell

O parâmetro -Credential usa um objeto PSCredential que especifica um nome de usuário e uma senha. No PowerShell do Analysis Services, o parâmetro -Credential está disponível para cmdlets que fazem uma solicitação de conexão com o Analysis Services, ao invés de cmdlets que são executados dentro do contexto de uma conexão existente. Os cmdlets que fazem uma solicitação de conexão incluem Invoke-ASCmd, Backup-ASDatabase e Restore-ASDatabase. Para esses cmdlets, o parâmetro -Credential pode ser usado, supondo que os seguintes critérios sejam atendidos:

  1. O servidor está configurado para acesso HTTP, o que significa que o IIS manipula a conexão, lê o nome de usuário e a senha e representa essa identidade de usuário ao se conectar ao Analysis Services. Para obter mais informações, consulte Configurar o acesso HTTP ao Analysis Services no IIS (Serviços de Informações da Internet) 8.0.

  2. O diretório virtual do IIS criado para acesso HTTP do Analysis Services está configurado para autenticação básica.

  3. O nome de usuário e a senha fornecidos pelo objeto de credencial correspondem a uma identidade de usuário do Windows. O Analysis Services usa essa identidade como o usuário atual. Se o usuário não for um usuário do Windows ou não tiver permissões suficientes para executar a operação solicitada, a solicitação falhará.

Para criar um objeto de credencial, você pode usar o cmdlet Get-Credential para coletar as credenciais do operador. Em seguida, você pode usar o objeto de credencial em um comando que se conecta ao Analysis Services. O exemplo a seguir ilustra uma abordagem. Neste exemplo, a conexão é com uma instância local (SQLSERVER:\SQLAS\HTTP_DS) configurada para acesso HTTP.

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

Ao usar a autenticação Básica, você sempre deve usar HTTPS com SSL para que o nome de usuário e as senhas sejam enviados por uma conexão criptografada. Para obter mais informações, consulte Configurar a camada de soquetes seguros no IIS 7.0 e configurar a autenticação básica (IIS 7).

Lembre-se de que credenciais, consultas e comandos fornecidos no PowerShell são passados inalterados para a camada de transporte. Incluir conteúdo confidencial em seus scripts aumenta o risco de um ataque de injeção mal-intencionado.

Fornecendo uma senha como um objeto Microsoft.Secure.String

Algumas operações, como backup e restauração, dão suporte a opções de criptografia que são ativadas quando você fornece uma senha no comando. Fornecer a senha instrui o Analysis Services a criptografar ou descriptografar o arquivo de backup. No Analysis Services, essa senha é instanciada como um objeto de cadeia de caracteres seguro. O exemplo a seguir fornece uma ilustração de como coletar uma senha do operador em tempo de execução.

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

Agora você pode fazer backup ou restaurar um arquivo de banco de dados criptografado, passando a variável $pwd para o parâmetro de senha. Para exibir um exemplo completo que combina essa ilustração com outros cmdlets, consulte Backup-ASDatabase cmdlet e Restore-ASDatabase cmdlet.

Como etapa de acompanhamento, remova a senha e a variável da sessão.

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

Tarefas do PowerShell do Analysis Services

Você pode executar o Analysis Services PowerShell no shell de gerenciamento do Windows PowerShell ou em um prompt de comando do Windows. Não há suporte para a execução do Analysis Services PowerShell no SQL Server Management Studio.

Esta seção descreve tarefas comuns para usar o Analysis Services PowerShell.

Carregar o Provider do Analysis Services e os Cmdlets

O provedor do Analysis Services é uma extensão do provedor raiz do SQL Server que fica disponível quando você importa o módulo SQLPS. Os cmdlets do Analysis Services são carregados simultaneamente; você também poderá carregá-las de forma independente se quiser usá-las sem o provedor.

  • Execute o cmdlet Import-module para carregar o SQLPS que inclui todas as funcionalidades do PowerShell do Analysis Services. Se você não puder importar o módulo, poderá alterar temporariamente a política de execução para irrestrita para fins de carregamento do módulo. Para obter mais informações, consulte Importar o módulo SQLPS.

    Import-Module "sqlps"  
    

    Como alternativa, use import-module "sqlps" -disablenamechecking para suprimir o aviso sobre nomes de verbo não aprovados.

  • Para carregar apenas os cmdlets específicos para tarefas do Analysis Services, sem o provedor do Analysis Services ou o cmdlet Invoke-ASCmd, você pode carregar o módulo SQLASCmdlets como uma operação independente.

    Import-Module "sqlascmdlets"  
    

Habilitar Administração Remota

Antes de usar o Analysis Services PowerShell com uma instância remota do Analysis Services, primeiro você deve habilitar a administração remota e o compartilhamento de arquivos. O erro a seguir indica um problema de configuração de firewall: "O servidor RPC não está disponível. (Exceção de HRESULT: 0x800706BA)".

  1. Verifique se os computadores locais e remotos têm as versões do SSAS (SQL Server 2014 Analysis Services) das ferramentas do cliente e do servidor.

  2. No servidor remoto que está hospedando uma instância do Analysis Services, abra a porta TCP 2383 no Firewall do Windows. Se você instalou o Analysis Services como uma instância nomeada ou está usando uma porta personalizada, o número da porta será diferente. Para obter mais informações, consulte Configurar o Firewall do Windows para permitir o acesso ao Analysis Services.

  3. No servidor remoto, verifique se os seguintes serviços foram iniciados: serviço RPC (Chamada de Procedimento Remoto), Serviço auxiliar do TCP/IP NetBIOS, serviço WMI (Instrumentação de Gerenciamento do Windows), serviço de Gerenciamento Remoto do Windows (WS-Management).

  4. No servidor remoto, inicie o snap-in editor de objetos de política de grupo (gpedit.msc).

  5. Abra a Configuração do Computador, abra Modelos Administrativos, abra a Rede, abra Conexões de Rede, abra o Firewall do Windows e abra o Perfil de Domínio.

  6. Clique duas vezes sobre Firewall do Windows: permitir exceção para administração remota de entrada, selecione Habilitado e clique em OK.

  7. Clique duas vezes em Firewall do Windows: Permitir exceção de compartilhamento de arquivos e impressoras, selecione Habilitado e clique em OK.

  8. No computador local que tem as ferramentas do cliente, use os seguintes cmdlets para verificar a administração remota, substituindo o nome do servidor real pelo espaço reservado remote-server-name. Omita o nome da instância se o Analysis Services estiver instalado como a instância padrão. Você deve ter importado anteriormente o módulo SQLPS para que o comando funcione.

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

Em alguns casos, uma configuração adicional pode ser necessária. Talvez seja necessário digitar o seguinte no servidor remoto antes de emitir comandos para ele de outro computador:

Enable-PSRemoting  

Conectar-se a um objeto do Analysis Services

O provedor do Analysis Services PowerShell dá suporte à navegação da hierarquia de objetos do Analysis Services e define o contexto para executar comandos. O provedor é uma extensão do provedor raiz SQLSERVER disponível por meio do módulo SQLPS. Depois de carregar o módulo SQLPS, você poderá navegar pelo caminho.

Você pode se conectar a uma instância local ou remota, mas alguns cmdlets só funcionam em uma instância local (ou seja, merge-partition). Você pode usar uma conexão nativa ou uma conexão HTTP para servidores do Analysis Services que você configurou para acesso HTTP. As ilustrações a seguir mostram o caminho de navegação para conexões nativas e HTTP. As ilustrações a seguir mostram o caminho de navegação para conexões nativas e HTTP.

Conexões nativas com o Analysis Services

Conexão nativa ao Analysis Services

O exemplo a seguir é uma demonstração de como usar uma conexão nativa para navegar na hierarquia de objetos. No provedor, você pode emitir um dir para exibir as informações da instância. Você pode usar cd para exibir objetos dessa instância.

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

Você deverá ver as seguintes coleções: Assemblies, Bancos de Dados, Funções e Rastreamentos. Continuando a usar cd e dir, você pode exibir o conteúdo de cada coleção.

Conexões HTTP com o Analysis Services

Conexão HTTP com o Analysis Services

As conexões HTTP serão úteis se você configurou seu servidor para acesso HTTP usando as instruções neste tópico: Configurar o acesso HTTP ao Analysis Services no IIS (Serviços de Informações da Internet) 8.0

Supondo que a URL do servidor seja https://localhost/olap/msmdpump.dll, uma conexão pode ser semelhante à seguinte:

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  

Você deverá ver as seguintes coleções: Assemblies, Bancos de Dados, Funções e Rastreamentos. Se você não puder exibir o conteúdo dessas coleções, verifique as configurações de autenticação no diretório virtual OLAP. Verifique se o Acesso Anônimo está desabilitado. Se você estiver usando a Autenticação do Windows, certifique-se de que sua conta de usuário do Windows tenha permissões administrativas na instância do Analysis Services.

Administrar o serviço

Verifique se o serviço está em execução. Retorna status, nome e nome de exibição para serviços do SQL Server, incluindo o Analysis Services (MSSQLServerOLAPService) e o Mecanismo de Banco de Dados.

Get-Service mssql*  

Retorna propriedades de um processo, incluindo o ID do processo, a contagem de identificadores e o uso de memória.

Get-Process msmdsrv  

Reinicia o serviço quando você emite o seguinte cmdlet do shell de administrador:

Restart-Service mssqlserverolapservice  

Obter ajuda para o PowerShell do Analysis Services

Use qualquer um dos cmdlets a seguir para verificar a disponibilidade do cmdlet e obter mais informações sobre serviços, processos e objetos.

  1. Get-Help retorna a ajuda interna para um cmdlet do Analysis Services, incluindo exemplos:

    Get-Help invoke-ascmd -Examples  
    
  2. Get-Command retorna uma lista com os onze cmdlets do PowerShell do Analysis Services:

    Get-Command -module SQLASCmdlets  
    
  3. Get-Member retorna propriedades ou métodos de um serviço ou 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 também pode ser usado para retornar propriedades ou métodos de um objeto (por exemplo, métodos AMO no objeto do servidor) usando o provedor SQLAS para especificar a instância do servidor.

    PS SQLSERVER:\sqlas\localhost\default > $serverObj = New-Object Microsoft.AnalysisServices.Server  
    PS SQLSERVER:\sqlas\localhost\default > $serverObj = | Get-Member -Type Method  
    
  5. Get-PSdrive retorna uma lista dos provedores que estão instalados no momento. Se você importou o módulo SQLPS, verá o SQLServer provedor na lista (o SQLAS faz parte do provedor SQLServer e nunca aparece separadamente na lista):

    Get-PSDrive  
    

Consulte Também

Instalar o SQL Server PowerShell
Gerenciar modelos de tabela usando o PowerShell (blog)
Configurar o acesso HTTP ao Analysis Services no IIS (Serviços de Informações da Internet) 8.0