在 Amazon SSAS上使用 RDS - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon SSAS上使用 RDS

部署SSAS專案之後,您可以直接處理 上的OLAP資料庫SSMS。

若要SSAS在 上使用 RDS
  1. 在 中SSMS,SSAS使用 Active Directory 網域的使用者名稱和密碼連線至 。

  2. 展開 Databases (資料庫)。新部署的SSAS資料庫隨即出現。

  3. 尋找連線字串,並更新使用者名稱和密碼,以允許存取來源SQL資料庫。處理SSAS物件時需要這樣做。

    1. 若使用表格模式,請執行下列操作:

      1. 展開 Connections (連線) 索引標籤。

      2. 開啟連線物件的內容 (按一下滑鼠右鍵) 選單,然後選擇 Properties (屬性)。

      3. 檢查連線字串中的使用者名稱和密碼。

    2. 若使用多維度模式,請執行下列操作:

      1. 展開 Data Sources (資料來源 索引標籤)

      2. 開啟資料來源的內容 (按一下滑鼠右鍵) 選單,然後選擇 Properties (屬性)。

      3. 檢查連線字串中的使用者名稱和密碼。

  4. 開啟您建立之SSAS資料庫的內容 (按滑鼠右鍵) 選單,然後選擇 處理資料庫

    視輸入資料的大小而定,處理作業可能需要幾分鐘才能完成。

為 設定 Windows 驗證使用者 SSAS

主要管理員使用者 (又稱為主要使用者) 可以使用下列程式碼範例,設定通過 Windows 驗證的登入資料,並授予必要的程序許可。這樣做會授予網域使用者執行SSAS客戶任務的許可、使用 S3 檔案傳輸程序、建立憑證,以及使用 SQL Server Agent Proxy。如需詳細資訊,請參閱 Microsoft 文件中的憑證 (資料庫引擎)建立SQL伺服器代理

您可以視需要授予部分或全部下列許可給 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代理

若要能夠使用 SQL Server Agent 排程SSAS資料庫處理,請建立SSAS憑證和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代理
  1. 使用下列SQL陳述式來建立代理。

    USE [msdb] GO EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSAS_Proxy',@credential_name=N'SSAS_Credential',@description=N'' GO
  2. 使用下列SQL陳述式將代理的存取權授予其他使用者。

    USE [msdb] GO EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSAS_Proxy',@login_name=N'mydomain\user_name' GO
  3. 使用下列SQL陳述式授予SSAS子系統對代理的存取權。

    USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS' GO
在代理上檢視代理和授權
  1. 使用下列SQL陳述式來檢視代理的承授者。

    USE [msdb] GO EXEC sp_help_proxy GO
  2. 使用下列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的分析 (XMLA) 命令。此範例會設定SSAS多維資料庫處理。

    • @server 參數概述 SQL Server Agent 任務的目標SSAS伺服器名稱。

      若要在SQL伺服器代理程式任務所在的相同RDS資料庫執行個體內呼叫 SSAS服務,請使用 localhost:2383

      若要從資料庫執行個體外部呼叫 RDS SSAS服務,請使用 RDS端點。如果資料庫執行個體是由相同的網域聯結,您也可以使用 Kerberos Active Directory (AD) RDS 端點 (your-DB-instance-name.your-AD-domain-name)。對於外部資料庫執行個體,請務必為安全連線正確設定與RDS資料庫執行個體相關聯的VPC安全群組。

    您可以進一步編輯查詢以支援各種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代理。

撤銷存取權並刪除代理伺服器
  1. 撤銷子系統存取權。

    USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSAS_Proxy',@proxy_subsystem='SSAS' GO
  2. 撤銷代理上的授權。

    USE [msdb] GO EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSAS_Proxy',@name=N'mydomain\user_name' GO
  3. 刪除代理。

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