

# Como usar o SSAS no Amazon RDS
<a name="SSAS.Use"></a>

Depois de implantar o projeto do SSAS, será possível processar diretamente o banco de dados OLAP no SSMS.

**Como usar o SSAS no RDS**

1. No SSMS, conecte-se ao SSAS usando o nome de usuário e a senha do domínio do Active Directory.

1. Expanda **Databases (Bancos de dados)**. Será exibido o banco de dados recém-implantado do SSAS.

1. Localize a string de conexão e atualize o nome de usuário e a senha para dar acesso ao banco de dados da fonte do SQL. Isso é necessário para processar objetos SSAS.

   1. Para o modo Tabular, faça o seguinte:

      1. Escolha a guia **Connections** (Conexões).

      1. Abra o menu de contexto (clique com o botão direito do mouse) do objeto de conexão e escolha **Properties** (Propriedades).

      1. Atualize o nome de usuário e a senha na string de conexão.

   1. Para o modo Multidimensional, faça o seguinte:

      1. Expanda a guia **Data Sources** (Origem dos dados).

      1. Abra o menu de contexto (clique com o botão direito do mouse) para o objeto de origem dos dados e escolha **Properties** (Propriedades).

      1. Atualize o nome de usuário e a senha na string de conexão.

1. Abra o menu de contexto (clique com o botão direito do mouse) para o banco de dados do SSAS que você criou e selecione **Process Database (Processar banco de dados)**.

   Dependendo do tamanho dos dados de entrada, a operação de processamento pode levar vários minutos para ser concluída.

**Topics**
+ [

## Configurar um usuário autenticado pelo Windows para o SSAS
](#SSAS.Use.Auth)
+ [

## Adicionar um usuário de domínio como administrador de banco de dados
](#SSAS.Admin)
+ [

## Criar um proxy do SSAS
](#SSAS.Use.Proxy)
+ [

## Programar o processamento de banco de dados do SSAS usando o SQL Server Agent
](#SSAS.Use.Schedule)
+ [

## Revogar o acesso do SSAS do proxy
](#SSAS.Use.Revoke)

## Configurar um usuário autenticado pelo Windows para o SSAS
<a name="SSAS.Use.Auth"></a>

O usuário administrador principal (às vezes chamado de usuário primário) pode usar o exemplo de código a seguir para configurar um logon autenticado pelo Windows e conceder as permissões de procedimento necessárias. Isso concede permissões ao usuário do domínio para executar tarefas do cliente SSAS, usar procedimentos de transferência de arquivos do S3, criar credenciais e trabalhar com o proxy do SQL Server Agent. Para obter mais informações, consulte [Credenciais (mecanismo de banco de dados)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) e [Criar um proxy do SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) na documentação da Microsoft.

Você pode conceder algumas ou todas as seguintes permissões, conforme necessário, aos usuários autenticados pelo Windows.

**Example**  

```
-- Create a server-level domain user login, if it doesn't already exist
USE [master]
GO
CREATE LOGIN [mydomain\user_name] FROM WINDOWS
GO

-- Create domain user, if it doesn't already exist
USE [msdb]
GO
CREATE USER [mydomain\user_name] FOR LOGIN [mydomain\user_name]
GO

-- Grant necessary privileges to the domain user
USE [master]
GO
GRANT ALTER ANY CREDENTIAL TO [mydomain\user_name]
GO

USE [msdb]
GO
GRANT EXEC ON msdb.dbo.rds_msbi_task TO [mydomain\user_name] with grant option
GRANT SELECT ON msdb.dbo.rds_fn_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_task_status TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_cancel_task TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_download_from_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_upload_to_s3 TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_delete_from_filesystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_gather_file_details TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_add_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_update_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_grant_login_to_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_revoke_login_from_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_delete_proxy TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_login_for_proxy to [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.sp_enum_proxy_for_subsystem TO [mydomain\user_name] with grant option
GRANT EXEC ON msdb.dbo.rds_sqlagent_proxy TO [mydomain\user_name] with grant option
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [mydomain\user_name]
GO
```

## Adicionar um usuário de domínio como administrador de banco de dados
<a name="SSAS.Admin"></a>

É possível adicionar um usuário de domínio como administrador de banco de dados do SSAS das seguintes maneiras:
+ Um administrador de banco de dados pode usar o SSMS para criar uma função com privilégios `admin` e adicionar usuários a essa função.
+ É possível usar o procedimento armazenado a seguir.

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_ADD_DB_ADMIN_MEMBER',
  @database_name='myssasdb',
  @ssas_role_name='exampleRole',
  @ssas_role_member='domain_name\domain_user_name';
  ```

  Os seguintes parâmetros são obrigatórios:
  + `@task_type` – O tipo da tarefa do MSBI, nesse caso `SSAS_ADD_DB_ADMIN_MEMBER`.
  + `@database_name` – O nome do banco de dados do SSAS ao qual você está concedendo privilégios de administrador.
  + `@ssas_role_name` – O nome da função de administrador de banco de dados do SSAS. Se a função ainda não existir, ela será criada.
  + `@ssas_role_member` – O usuário do banco de dados do SSAS que você está adicionando à função de administrador.

## Criar um proxy do SSAS
<a name="SSAS.Use.Proxy"></a>

Para poder programar o processamento do banco de dados do SSAS usando o SQL Server Agent, crie uma credencial do SSAS e um proxy SSAS. Execute esses procedimentos como um usuário autenticado pelo Windows.

**Para criar a credencial do SSAS**
+ Crie a credencial para o proxy. Para fazer isso, você pode usar o SSMS ou a seguinte instrução SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**nota**  
`IDENTITY` deve ser um login autenticado por domínio. Substitua `mysecret` pela senha do login autenticado por domínio.

**Para criar o proxy do SSIS**

1. Use a seguinte instrução SQL para criar o proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSAS_Proxy',@credential_name=N'SSAS_Credential',@description=N''
   GO
   ```

1. Use a seguinte instrução SQL para conceder acesso ao proxy para outros usuários.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSAS_Proxy',@login_name=N'mydomain\user_name'
   GO
   ```

1. Use a seguinte instrução SQL para dar ao subsistema do SSAS acesso ao proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

**Como visualizar o proxy e as concessões no proxy**

1. Use a seguinte instrução SQL para visualizar os beneficiários do proxy.

   ```
   USE [msdb]
   GO
   EXEC sp_help_proxy
   GO
   ```

1. Use a seguinte instrução SQL para visualizar as concessões do subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_enum_proxy_for_subsystem
   GO
   ```

## Programar o processamento de banco de dados do SSAS usando o SQL Server Agent
<a name="SSAS.Use.Schedule"></a>

Depois de criar a credencial e o proxy e conceder acesso SSAS ao proxy, você pode criar um trabalho do SQL Server Agent para programar o processamento do banco de dados do SSAS.

**Para programar processamento de banco de dados do SSAS**
+ Use o SSMS ou o T-SQL para criar o trabalho do SQL Server Agent. O exemplo a seguir usa T-SQL. Você pode configurar ainda mais seu programa de trabalho por meio do SSMS ou o T-SQL.
  + O parâmetro `@command` descreve o comando XML for Analysis (XMLA) a ser executado pelo trabalho do SQL Server Agent. Este exemplo configura o processamento de banco de dados multidimensional do SSAS.
  + O parâmetro `@server` descreve o nome do servidor do SSAS de destino do trabalho do SQL Server Agent.

    Para chamar o serviço do SSAS na mesma instância de banco de dados do RDS em que o trabalho do SQL Server Agent reside, use `localhost:2383`.

    Para chamar o serviço do SSAS de fora da instância de banco de dados do RDS, use o endpoint do RDS. Você também pode usar o endpoint do Kerberos Active Directory (AD) (`your-DB-instance-name.your-AD-domain-name`) se as instâncias de banco de dados do RDS forem unidas pelo mesmo domínio. Para instâncias de banco de dados externas, certifique-se de configurar corretamente o grupo de segurança da VPC associado à instância de banco de dados do RDS para uma conexão segura.

  Você pode editar ainda mais a consulta para oferecer suporte a várias operações XMLA. Faça edições modificando diretamente a consulta T-SQL ou usando a interface do usuário do SSMS após a criação do trabalho do SQL Server Agent.

  ```
  USE [msdb]
  GO
  DECLARE @jobId BINARY(16)
  EXEC msdb.dbo.sp_add_job @job_name=N'SSAS_Job', 
      @enabled=1, 
      @notify_level_eventlog=0, 
      @notify_level_email=0, 
      @notify_level_netsend=0, 
      @notify_level_page=0, 
      @delete_level=0, 
      @category_name=N'[Uncategorized (Local)]', 
      @job_id = @jobId OUTPUT
  GO
  EXEC msdb.dbo.sp_add_jobserver 
      @job_name=N'SSAS_Job', 
      @server_name = N'(local)'
  GO
  EXEC msdb.dbo.sp_add_jobstep @job_name=N'SSAS_Job', @step_name=N'Process_SSAS_Object', 
      @step_id=1, 
      @cmdexec_success_code=0, 
      @on_success_action=1, 
      @on_success_step_id=0, 
      @on_fail_action=2, 
      @on_fail_step_id=0, 
      @retry_attempts=0, 
      @retry_interval=0, 
      @os_run_priority=0, @subsystem=N'ANALYSISCOMMAND', 
      @command=N'<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
          <Parallel>
              <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" 
                  xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" 
                  xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" 
                  xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" 
                  xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" 
                  xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
                  <Object>
                      <DatabaseID>Your_SSAS_Database_ID</DatabaseID>
                  </Object>
                  <Type>ProcessFull</Type>
                  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
              </Process>
          </Parallel>
      </Batch>', 
      @server=N'localhost:2383', 
      @database_name=N'master', 
      @flags=0, 
      @proxy_name=N'SSAS_Proxy'
  GO
  ```

## Revogar o acesso do SSAS do proxy
<a name="SSAS.Use.Revoke"></a>

Você pode revogar o acesso ao subsistema SSAS e excluir o proxy SSAS usando os procedimentos armazenados a seguir.

**Como revogar o acesso e excluir o proxy**

1. Revogue o acesso ao subsistema.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS'
   GO
   ```

1. Revogue as concessões no proxy.

   ```
   USE [msdb]
   GO
   EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSAS_Proxy',@name=N'mydomain\user_name'
   GO
   ```

1. Exclua o proxy.

   ```
   USE [msdb]
   GO
   EXEC dbo.sp_delete_proxy @proxy_name = N'SSAS_Proxy'
   GO
   ```