在 Amazon RDS 上使用 SSAS
部署 SSAS 项目后,您可以直接在 SSMS 上处理 OLAP 数据库。
在 RDS 上使用 SSAS
-
在 SSMS 中,使用 Active Directory 域的用户名和密码连接到 SSAS。
-
展开 Databases (数据库)。此时将显示新部署的 SSAS 数据库。
-
找到连接字符串,再更新用户名和密码,以便有权访问源 SQL 数据库。处理 SSAS 对象必须要执行此操作。
-
针对表格模式执行以下操作:
-
展开 Connections(连接)选项卡。
-
打开连接对象的上下文(右键单击)菜单,然后选择 Properties(属性)。
-
更新连接字符串中的用户名和密码。
-
-
针对多维模式执行以下操作:
-
展开 Data Sources(数据源)选项卡。
-
打开数据源对象的上下文(右键单击)菜单,然后选择 Properties(属性)。
-
更新连接字符串中的用户名和密码。
-
-
-
打开您创建的 SSAS 数据库的上下文(右键单击)菜单,然后选择 Process Database (处理数据库)。
根据输入数据的大小,处理操作可能需要几分钟时间才能完成。
为 SSAS 设置经 Windows 身份验证的用户
主管理员用户(有时也被称为主用户)可以使用以下代码示例设置经 Windows 身份验证的登录并授予所需的过程权限。执行此操作可向域用户授予权限以运行 SSAS 客户任务、使用 S3 文件传输过程、创建凭证以及使用 SQL Server Agent 代理。有关更多信息,请参阅 Microsoft 文档中的凭证(数据库引擎)
您可以根据需要向经 Windows 身份验证的用户授予以下部分或所有权限。
-- 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
添加域用户作为数据库管理员
您可以通过以下方式,将域用户添加为 SSAS 数据库管理员:
-
数据库管理员可以使用 SSMS 创建具有
admin
权限的角色,然后将用户添加到该角色。 -
您可以使用以下存储过程。
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
';以下参数为必需参数:
-
@task_type
– MSBI 任务的类型,在此例中为SSAS_ADD_DB_ADMIN_MEMBER
。 -
@database_name
– 要向其授予管理员特权的 SSAS 数据库的名称。 -
@ssas_role_name
– SSAS 数据库管理员角色名称。如果角色尚不存在,则会创建它。 -
@ssas_role_member
– 要添加到管理员角色的 SSAS 数据库用户。
-
创建 SSAS 代理
要先创建 SSAS 凭证和 SSAS 代理,才能使用 SQL Server Agent 来安排 SSAS 数据库处理。以经 Windows 身份验证的用户身份运行这些过程。
创建 SSAS 凭证
-
为代理创建凭证。为此,您可以使用 SSMS 或以下 SQL 语句。
USE [master] GO CREATE CREDENTIAL [SSAS_Credential] WITH IDENTITY = N'
mydomain
\user_name
', SECRET = N'mysecret
' GO注意
IDENTITY
必须是经域身份验证的登录名。将
替换为经域身份验证的登录的密码。mysecret
创建 SSAS 代理
-
使用以下 SQL 语句创建代理。
USE [msdb] GO EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSAS_Proxy',@credential_name=N'SSAS_Credential',@description=N'' GO
-
使用以下 SQL 语句向其他用户授予对代理的访问权限。
USE [msdb] GO EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSAS_Proxy',@login_name=N'
mydomain
\user_name
' GO -
使用以下 SQL 语句向代理授予 SSAS 子系统访问权限。
USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS' GO
查看代理和代理上的授权
-
使用以下 SQL 语句查看代理的被授权者。
USE [msdb] GO EXEC sp_help_proxy GO
-
使用以下 SQL 语句查看子系统授权。
USE [msdb] GO EXEC msdb.dbo.sp_enum_proxy_for_subsystem GO
使用 SQL Server Agent 安排 SSAS 数据库处理
创建凭证和代理并向 SSAS 授予对代理的访问权限后,您可以创建 SQL Server Agent 任务来安排 SSAS 数据库处理。
安排 SSAS 数据库处理
-
使用 SSMS 或 T-SQL 创建 SQL Server Agent 任务。以下示例使用 T-SQL。您可以通过 SSMS 或 T-SQL 进一步配置其任务计划。
-
@command
参数概述了将由 SQL Server Agent 任务运行的 XML for Analysis (XMLA) 命令。此示例配置了 SSAS 多维数据库处理。 -
@server
参数概述了 SQL Server Agent 任务的目标 SSAS 服务器名称。要在 SQL Server Agent 任务所在的同一 RDS 数据库实例中调用 SSAS 服务,请使用
localhost:2383
。要从 RDS 数据库实例外部调用 SSAS 服务,请使用 RDS 端点。如果 RDS 数据库实例是由同一个域联接,则还可以使用 Kerberos Active Directory (AD) 端点 (
)。对于外部数据库实例,请确保正确配置与 RDS 数据库实例关联的 VPC 安全组,以便实现安全连接。your-DB-instance-name
.your-AD-domain-name
您可以进一步编辑查询来支持各种 XMLA 操作。可以直接修改 T-SQL 查询进行编辑,也可以在创建 SQL Server Agent 任务后使用 SSMS UI 进行编辑。
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
-
从代理撤消 SSAS 访问权限
您可以使用以下存储过程撤消对 SSAS 子系统的访问权限并删除 SSAS 代理。
撤消访问权限并删除代理
-
撤消子系统访问权限。
USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS' GO
-
撤消代理上的授权。
USE [msdb] GO EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSAS_Proxy',@name=N'
mydomain
\user_name
' GO -
删除代理。
USE [msdb] GO EXEC dbo.sp_delete_proxy @proxy_name = N'SSAS_Proxy' GO