

# Uso de SSAS en Amazon RDS
<a name="SSAS.Use"></a>

Después de implementar el proyecto SSAS, puede procesar directamente la base de datos OLAP en SSMS.

**Para utilizar SSAS en RDS**

1. En SSMS, conéctese a SSAS mediante el nombre de usuario y la contraseña del dominio de Active Directory.

1. Expanda **Databases (Bases de datos)**. Aparece la base de datos SSAS recién implementada.

1. Localice la cadena de conexión y actualice el nombre de usuario y la contraseña para dar acceso a la base de datos SQL de origen. Esta operación es necesaria para procesar los objetos de SSAS.

   1. Para el modo tabular, haga lo siguiente:

      1. Despliegue la pestaña **Connections** (Conexiones).

      1. Abra el menú contextual (con el botón derecho del ratón) del objeto de conexión y elija **Properties** (Propiedades).

      1. Actualice el nombre de usuario y la contraseña en la cadena de conexión.

   1. Para el modo multidimensional, haga lo siguiente:

      1. Despliegue la pestaña **Data Sources** (Orígenes de datos).

      1. Abra el menú contextual (con el botón derecho del ratón) del objeto origen de datos y, a continuación, elija **Properties** (Propiedades).

      1. Actualice el nombre de usuario y la contraseña en la cadena de conexión.

1. Abra el menú contextual (haga clic con el botón derecho) de la base de datos SSAS que ha creado y elija **Process Database** (Procesar base de datos).

   Según el tamaño de los datos de entrada, la operación de procesamiento puede tardar varios minutos en completarse.

**Topics**
+ [Configuración de un usuario autenticado por Windows para SSAS](#SSAS.Use.Auth)
+ [Agregar un usuario de dominio como administrador de bases de datos](#SSAS.Admin)
+ [Creación de un proxy de SSAS](#SSAS.Use.Proxy)
+ [Programación del procesamiento de bases de datos SSAS mediante SQL Server Agent](#SSAS.Use.Schedule)
+ [Revocación de acceso de SSAS desde el proxy](#SSAS.Use.Revoke)

## Configuración de un usuario autenticado por Windows para SSAS
<a name="SSAS.Use.Auth"></a>

El usuario administrador principal (a veces llamado usuario maestro) puede utilizar el siguiente ejemplo de código para configurar un inicio de sesión autenticado por Windows y conceder los permisos de procedimiento necesarios. Al hacer esto se conceden permisos al usuario de dominio para ejecutar tareas de cliente de SSAS, utilizar procedimientos de transferencia de archivos S3, crear credenciales y trabajar con el proxy de SQL Server Agent. Para obtener más información, consulte [Credenciales (Motor de base de datos)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) y [Crear un proxy de SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15) en la documentación de Microsoft.

Puede conceder algunos o todos los permisos siguientes, según sea necesario, a los usuarios autenticados de 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
```

## Agregar un usuario de dominio como administrador de bases de datos
<a name="SSAS.Admin"></a>

Puede agregar un usuario de dominio como administrador de base de datos SSAS de las siguientes maneras:
+ Un administrador de base de datos puede usar SSMS para crear un rol con privilegios de `admin` y, a continuación, agregar usuarios a dicho rol.
+ Puede utilizar el siguiente procedimiento almacenado.

  ```
  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';
  ```

  Se requieren los siguientes parámetros:
  + `@task_type` – el tipo de la tarea MSBI; en este caso `SSAS_ADD_DB_ADMIN_MEMBER`.
  + `@database_name`: el nombre de la base de datos SSAS a la que concede privilegios de administrador.
  + `@ssas_role_name`: el nombre del rol de administrador de base de datos SSAS. Si el rol no existe, se crea.
  + `@ssas_role_member`: el usuario de la base de datos SSAS que va a agregar al rol de administrador.

## Creación de un proxy de SSAS
<a name="SSAS.Use.Proxy"></a>

Para poder programar el procesamiento de la base de datos de SSAS mediante SQL Server Agent, cree una credencial de SSAS y un proxy de SSAS. Ejecute estos procedimientos como usuario autenticado por Windows.

**Para crear la credencial de SSAS**
+ Cree la credencial para el proxy. Para ello, puede utilizar SSMS o la siguiente instrucción SQL.

  ```
  USE [master]
  GO
  CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret'
  GO
  ```
**nota**  
`IDENTITY` debe ser un inicio de sesión autenticado por dominio. Reemplace `mysecret` por la contraseña para el inicio de sesión autenticado por el dominio.

**Para crear el proxy de SSAS**

1. Utilice la siguiente instrucción SQL para crear el proxy.

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

1. Utilice la siguiente instrucción SQL para conceder acceso al proxy a otros usuarios.

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

1. Utilice la siguiente instrucción SQL para conceder acceso al subsistema de SSAS al proxy.

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

**Para consultar el proxy y las concesiones en el proxy**

1. Utilice la siguiente instrucción SQL para consultar los beneficiarios del proxy.

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

1. Utilice la siguiente instrucción SQL para consultar las concesiones del subsistema.

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

## Programación del procesamiento de bases de datos SSAS mediante SQL Server Agent
<a name="SSAS.Use.Schedule"></a>

Después de crear la credencial y el proxy y conceder acceso a SSAS al proxy, puede crear un trabajo de SQL Server Agent para programar el procesamiento de la base de datos de SSAS.

**Para programar el procesamiento de base de datos de SSAS**
+ Use SSMS o T-SQL para crear el trabajo de SQL Server Agent. En el siguiente ejemplo se utiliza T-SQL. Además, puede configurar la programación de trabajo a través de SSMS o T-SQL.
  + El parámetro `@command` indica el comando XML for Analysis (XMLA) que debe ejecutar el trabajo de SQL Server Agent Este ejemplo configura el procesamiento de la base de datos multidimensional de SSAS.
  + El parámetro `@server` indica el nombre del servidor SSAS de destino del trabajo de SQL Server Agent.

    Para llamar al servicio de SSAS dentro de la misma instancia de base de datos RDS donde reside el trabajo de SQL Server Agent, utilice `localhost:2383`.

    Para llamar al servicio de SSAS desde fuera de la instancia de base de datos RDS, utilice el punto de conexión RDS. También puede utilizar el punto de conexión de Kerberos Active Directory (AD) (`your-DB-instance-name.your-AD-domain-name`) si las instancias de la base de datos RDS están unidas por el mismo dominio. En el caso de las instancias de base de datos externas, asegúrese de configurar correctamente el grupo de seguridad de la VPC asociado a la instancia de base de datos RDS para obtener una conexión segura.

  Puede editar aún más la consulta para admitir varias operaciones XMLA. Realice las ediciones modificando directamente la consulta T-SQL o mediante la UI de SSMS tras la creación del trabajo de 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
  ```

## Revocación de acceso de SSAS desde el proxy
<a name="SSAS.Use.Revoke"></a>

Puede revocar el acceso al subsistema de SSAS y eliminar el proxy de SSAS mediante los siguientes procedimientos almacenados.

**Para revocar el acceso y eliminar el proxy**

1. Revoque el acceso al subsistema.

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

1. Revoque las concesiones en el proxy.

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

1. Elimine el proxy.

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