

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

# 支援 Amazon RDS for SQL Server 中的 SQL Server Analysis Services
<a name="Appendix.SQLServer.Options.SSAS"></a>

Microsoft SQL Server Analysis Services (SSAS) 是 Microsoft 商業智慧 (MSBI) 套件的一部分。SSAS 是安裝在 SQL Server 內的線上分析處理 (OLAP) 和資料採礦工具。您可以使用 SSAS 來分析資料，以協助您做出商業決策。SSAS 與 SQL Server 關聯式資料庫不同，因為 SSAS 是針對商業智慧環境中常見的查詢和計算最佳化。

 您可以在現有或新的資料庫執行個體上開啟 SSAS。它安裝在與資料庫引擎相同的資料庫執行個體上。如需 SSAS 的詳細資訊，請參閱 Microsoft [Analysis Services 文件](https://docs.microsoft.com/en-us/analysis-services)。

Amazon RDS 的下列版本支援 SSAS for SQL Server Standard 和 Enterprise Edition：
+ 表格模式：
  + SQL Server 2019，15.00.4043.16.v1 版和更新版本
  + SQL Server 2017，14.00.3223.3.v1 版和更新版本
  + SQL Server 2016，13.00.5426.0.v1 版和更新版本
+ 多維度模式：
  + SQL Server 2019，15.00.4153.1.v1 版和更新版本
  + SQL Server 2017，14.00.3381.3.v1 版和更新版本
  + SQL Server 2016，13.00.5882.1.v1 版和更新版本

**Contents**
+ [限制](#SSAS.Limitations)
+ [開啟 SSAS](SSAS.Enabling.md)
  + [建立 SSAS 的選項群組。](SSAS.Enabling.md#SSAS.OptionGroup)
  + [將 SSAS 選項新增至選項群組](SSAS.Enabling.md#SSAS.Add)
  + [將選項群組關聯至您的資料庫執行個體](SSAS.Enabling.md#SSAS.Apply)
  + [允許對 VPC 安全群組進行傳入存取](SSAS.Enabling.md#SSAS.InboundRule)
  + [啟用 Amazon S3 整合](SSAS.Enabling.md#SSAS.EnableS3)
+ [在 Amazon RDS 上部署 SSAS 專案](SSAS.Deploy.md)
+ [監視部署任務的狀態](SSAS.Monitor.md)
+ [在 Amazon RDS 上使用 SSAS](SSAS.Use.md)
  + [為 SSAS 設定通過 Windows 驗證的使用者](SSAS.Use.md#SSAS.Use.Auth)
  + [新增網域使用者做為資料庫管理員](SSAS.Use.md#SSAS.Admin)
  + [建立 SSAS Proxy](SSAS.Use.md#SSAS.Use.Proxy)
  + [使用 SQL Server Agent 排程 SSAS 資料庫處理作業](SSAS.Use.md#SSAS.Use.Schedule)
  + [從 Proxy 撤銷 SSAS 存取權](SSAS.Use.md#SSAS.Use.Revoke)
+ [備份 SSAS 資料庫](SSAS.Backup.md)
+ [還原 SSAS 資料庫](SSAS.Restore.md)
  + [將資料庫執行個體還原至指定的時間](SSAS.Restore.md#SSAS.PITR)
+ [變更 SSAS 模式](SSAS.ChangeMode.md)
+ [關閉 SSAS](SSAS.Disable.md)
+ [疑難排解 SSAS 問題](SSAS.Trouble.md)

## 限制
<a name="SSAS.Limitations"></a>

在 RDS for SQL Server 上使用 SSAS 時適用下列限制：
+ RDS for SQL Server 支援在表格或多維度模式下執行 SSAS。如需詳細資訊，請參閱 Microsoft 說明文件中的[比較表格和多維度解決方案](https://docs.microsoft.com/en-us/analysis-services/comparing-tabular-and-multidimensional-solutions-ssas)在微軟檔案中。
+ 一次只能使用一種 SSAS 模式。變更模式之前，請務必刪除所有 SSAS 資料庫。

  如需更多詳細資訊，請參閱 [變更 SSAS 模式](SSAS.ChangeMode.md)。
+ 不支援異地同步備份執行個體。
+ 執行個體必須使用自我管理的 Active Directory 或 AWS Directory Service for Microsoft Active Directory for SSAS 身分驗證。如需更多詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。
+ 使用者不會獲得 SSAS 伺服器系統管理員存取權，但可以獲得資料庫層級的系統管理員存取權。
+ 唯一支援存取 SSAS 的連接埠是 2383。
+ 您無法直接部署專案。我們提供 RDS 預存程序來執行此操作。如需更多詳細資訊，請參閱 [在 Amazon RDS 上部署 SSAS 專案](SSAS.Deploy.md)。
+ 不支援在部署期間進行處理。
+ 不支援使用 .xmla 檔案進行部署。
+ SSAS 專案輸入檔案和資料庫備份輸出檔案只能位於資料庫執行個體的 `D:\S3` 資料夾中。

# 開啟 SSAS
<a name="SSAS.Enabling"></a>

使用下列程序為資料庫執行個體開啟 SSAS：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `SSAS` 選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

1. 允許傳入存取 SSAS 監聽器連接埠的 Virtual Private Cloud (VPC) 安全群組。

1. 開啟 Amazon S3 整合。

## 建立 SSAS 的選項群組。
<a name="SSAS.OptionGroup"></a>

使用 AWS 管理主控台或 AWS CLI 來建立對應至您打算使用之 SQL Server 引擎和資料庫執行個體版本的選項群組。

**注意**  
如果現有的選項群組適用於正確的 SQL Server 引擎和版本，則也可以使用。

### 主控台
<a name="SSAS.OptionGroup.Console"></a>

下列主控台程序會建立 SQL Server Standard Edition 2017 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 窗格中，執行下列動作：

   1. 在 **Name** (名稱) 中，輸入您 AWS 帳戶中的唯一選項群組名稱，例如 **ssas-se-2017**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **SSAS option group for SQL Server SE 2017**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **sqlserver-se**。

   1. 對於 **Major engine version (主要引擎版本)**，請選擇 **14.00**。

1. 選擇**建立**。

### CLI
<a name="SSAS.OptionGroup.CLI"></a>

下列 CLI 範例會為 SQL Server Standard Edition 2017 建立選項群組。

**建立選項群組**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-option-group \
      --option-group-name ssas-se-2017 \
      --engine-name sqlserver-se \
      --major-engine-version 14.00 \
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

  針對 Windows：

  ```
  aws rds create-option-group ^
      --option-group-name ssas-se-2017 ^
      --engine-name sqlserver-se ^
      --major-engine-version 14.00 ^
      --option-group-description "SSAS option group for SQL Server SE 2017"
  ```

## 將 SSAS 選項新增至選項群組
<a name="SSAS.Add"></a>

接下來，使用 AWS 管理主控台或 AWS CLI 將 `SSAS` 選項加入至選項群組。

### 主控台
<a name="SSAS.Add.Console"></a>

**新增 SSAS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛建立的選項群組。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details (選項詳細資料)** 下，選擇 **SSAS** 做為 **Option name (選項名稱)**。

1. 在 **Option settings (選項設定)** 下，執行下列動作：

   1. 為 **Max memory** (最大記憶體) 輸入範圍 10–80 間的值。

      **Max memory (最大記憶體)** 指定 SSAS 開始更積極釋放記憶體的閾值上限，以便為正在執行的要求以及新的高優先順序要求騰出空間。這個數字是資料庫執行個體總記憶體的百分比。允許的值為 10–80，預設值是 45。

   1. 為 **Mode** (模式) 選擇 SSAS 伺服器模式 **Tabular** (表格) 或 **Multidimensional** (多維度)。

      如果您看不到 **Mode** (模式) 選項設定，表示您的 AWS 區域不支援多維度模式。如需詳細資訊，請參閱 [限制](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations)。

      預設選項為 **Tabular** (表格)。

   1. 針對 **Security groups (安全群組)**，選擇要與選項產生關聯的 VPC 安全群組。
**注意**  
會預先填入存取 SSAS 的連接埠 (2383)。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

### CLI
<a name="SSAS.Add.CLI"></a>

**新增 SSAS 選項**

1. 使用下列參數建立 JSON 檔案，例如 `ssas-option.json`：
   + `OptionGroupName` – 您先前建立或選擇的選項群組名稱 (在下列範例中是 `ssas-se-2017`)。
   + `Port` – 您用來存取 SSAS 的連接埠。唯一支援的連接埠是 2383。
   + `VpcSecurityGroupMemberships` – RDS 資料庫執行個體的 VPC 安全群組成員資格。
   + `MAX_MEMORY` – SSAS 應開始更積極釋放記憶體的閾值上限，以便為正在執行的要求以及新的高優先順序要求騰出空間。這個數字是資料庫執行個體總記憶體的百分比。允許的值為 10–80，預設值是 45。
   + `MODE` – SSAS 伺服器模式 `Tabular` 或 `Multidimensional`。預設值為 `Tabular`。

     如果您收到錯誤，顯示 `MODE` 選項設定無效，表示您的 AWS 區域不支援多維度模式。如需詳細資訊，請參閱 [限制](Appendix.SQLServer.Options.SSAS.md#SSAS.Limitations)。

   以下是含有 SSAS 選項設定的 JSON 檔案範例。

   ```
   {
   "OptionGroupName": "ssas-se-2017",
   "OptionsToInclude": [
   	{
   	"OptionName": "SSAS",
   	"Port": 2383,
   	"VpcSecurityGroupMemberships": ["sg-0abcdef123"],
   	"OptionSettings": [{"Name":"MAX_MEMORY","Value":"60"},{"Name":"MODE","Value":"Multidimensional"}]
   	}],
   "ApplyImmediately": true
   }
   ```

1. 將 `SSAS` 選項新增至選項群組。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
       --cli-input-json file://ssas-option.json \
       --apply-immediately
   ```

   針對 Windows：

   ```
   aws rds add-option-to-option-group ^
       --cli-input-json file://ssas-option.json ^
       --apply-immediately
   ```

## 將選項群組關聯至您的資料庫執行個體
<a name="SSAS.Apply"></a>

您可以使用主控台或 CLI 為選項群組與資料庫執行個體建立關聯。

### 主控台
<a name="SSAS.Apply.Console"></a>

將您的選項群組關聯至新的或現有的資料庫執行個體：
+ 對於新的資料庫執行個體，當您啟動執行個體時，將選項群組關聯至資料庫執行個體。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請修改執行個體並與新的選項群組建立關聯。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
**注意**  
如果您使用現有執行個體，則該執行個體必須已有與其相關聯的 Active Directory 網域和 AWS Identity and Access Management (IAM) 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。

### CLI
<a name="SSAS.Apply.CLI"></a>

您可以將選項群組關聯至新的或現有的資料庫執行個體。

**注意**  
如果您使用現有執行個體，則該執行個體必須已有與其相關聯的 Active Directory 網域和 IAM 角色。如果您建立新執行個體，請指定現有的 Active Directory 網域和 IAM 角色。如需詳細資訊，請參閱 [使用 Active Directory 搭配 RDS for SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md)。

**建立使用選項群組的資料庫執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds create-db-instance \
      --db-instance-identifier myssasinstance \
      --db-instance-class db.m5.2xlarge \
      --engine sqlserver-se \
      --engine-version 14.00.3223.3.v1 \
      --allocated-storage 100 \
      --manage-master-user-password \
      --master-username admin \
      --storage-type gp2 \
      --license-model li \
      --domain-iam-role-name my-directory-iam-role \
      --domain my-domain-id \
      --option-group-name ssas-se-2017
  ```

  針對 Windows：

  ```
  aws rds create-db-instance ^
      --db-instance-identifier myssasinstance ^
      --db-instance-class db.m5.2xlarge ^
      --engine sqlserver-se ^
      --engine-version 14.00.3223.3.v1 ^
      --allocated-storage 100 ^
      --manage-master-user-password ^
      --master-username admin ^
      --storage-type gp2 ^
      --license-model li ^
      --domain-iam-role-name my-directory-iam-role ^
      --domain my-domain-id ^
      --option-group-name ssas-se-2017
  ```

**修改資料庫執行個體以關聯選項群組**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds modify-db-instance \
      --db-instance-identifier myssasinstance \
      --option-group-name ssas-se-2017 \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds modify-db-instance ^
      --db-instance-identifier myssasinstance ^
      --option-group-name ssas-se-2017 ^
      --apply-immediately
  ```

## 允許對 VPC 安全群組進行傳入存取
<a name="SSAS.InboundRule"></a>

在與您的資料庫執行個體相關聯的 VPC 安全群組中，為指定的 SSAS 接聽程式連接埠建立傳入規則。如需設定安全群組的詳細資訊，請參閱[建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

## 啟用 Amazon S3 整合
<a name="SSAS.EnableS3"></a>

若要將模型組態檔下載到主機以進行部署，請使用 Amazon S3 整合。如需詳細資訊，請參閱 [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)。

# 在 Amazon RDS 上部署 SSAS 專案
<a name="SSAS.Deploy"></a>

在 RDS 上，您無法使用 SQL Server Management Studio (SSMS) 直接部署 SSAS 專案。若要部署專案，請使用 RDS 預存程序。

**注意**  
不支援使用 .xmla 檔案進行部署。

部署專案之前，請確定下列事項：
+ Amazon S3 整合已開啟。如需更多詳細資訊，請參閱 [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)。
+ `Processing Option` 組態設定設為 `Do Not Process`。此設定表示部署後不會進行任何處理。
+ 您同時擁有 `myssasproject.asdatabase` 和 `myssasproject.deploymentoptions` 檔案。它們會在您建置 SSAS 專案時自動產生。

**在 RDS 上部署 SSAS 專案**

1. 將 `.asdatabase` (SSAS 模型) 檔案從 S3 儲存貯體下載到資料庫執行個體，如下列範例所示。如需下載參數的詳細資訊，請參閱[將 Amazon S3 儲存貯體中的檔案下載至 SQL Server 資料庫執行個體](Appendix.SQLServer.Options.S3-integration.using.md#Appendix.SQLServer.Options.S3-integration.using.download)。

   ```
   exec msdb.dbo.rds_download_from_s3 
   @s3_arn_of_file='arn:aws:s3:::bucket_name/myssasproject.asdatabase', 
   [@rds_file_path='D:\S3\myssasproject.asdatabase'],
   [@overwrite_file=1];
   ```

1. 將 `.deploymentoptions` 檔案從 S3 儲存貯體下載到您的資料庫執行個體。

   ```
   exec msdb.dbo.rds_download_from_s3
   @s3_arn_of_file='arn:aws:s3:::bucket_name/myssasproject.deploymentoptions', 
   [@rds_file_path='D:\S3\myssasproject.deploymentoptions'],
   [@overwrite_file=1];
   ```

1. 部署專案。

   ```
   exec msdb.dbo.rds_msbi_task
   @task_type='SSAS_DEPLOY_PROJECT',
   @file_path='D:\S3\myssasproject.asdatabase';
   ```

# 監視部署任務的狀態
<a name="SSAS.Monitor"></a>

若要追蹤部署 (或下載) 任務的狀態，請呼叫 `rds_fn_task_status` 函數。需要兩個參數。第一個參數不適用於 SSAS，所以應該一律為 `NULL`。第二個參數接受任務 ID。

若要查看所有任務的清單，請將第一個參數設為 `NULL`，將第二個參數設為 `0`，如下列範例所示。

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);
```

若要取得特定的任務，請將第一個參數設為 `NULL`，將第二個參數設為任務 ID，如下列範例所示。

```
SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);
```

`rds_fn_task_status` 函數會傳回下列資訊。


| 輸出參數 | 描述 | 
| --- | --- | 
| `task_id` | 任務的 ID。 | 
| `task_type` | 對於 SSAS，任務可以有下列任務類型： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `database_name` | 不適用於 SSAS 任務。 | 
| `% complete` | 任務的進度 (以百分比表示)。 | 
| `duration (mins)` | 任務所花的時間 (以分鐘為單位)。 | 
| `lifecycle` |  任務的狀態。可能的狀態如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSAS.Monitor.html)  | 
| `task_info` | 任務的其他資訊。如果處理期間發生錯誤，此欄包含該錯誤的相關資訊。 如需更多詳細資訊，請參閱 [疑難排解 SSAS 問題](SSAS.Trouble.md)。 | 
| `last_updated` | 上次更新任務狀態的日期和時間。 | 
| `created_at` | 建立任務的日期和時間。 | 
| `S3_object_arn` |  不適用於 SSAS 任務。  | 
| `overwrite_S3_backup_file` | 不適用於 SSAS 任務。 | 
| `KMS_master_key_arn` |  不適用於 SSAS 任務。  | 
| `filepath` |  不適用於 SSAS 任務。  | 
| `overwrite_file` |  不適用於 SSAS 任務。  | 
| `task_metadata` | 與 SSAS 任務相關聯的中繼資料。 | 

# 在 Amazon RDS 上使用 SSAS
<a name="SSAS.Use"></a>

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

**在 RDS 上使用 SSAS**

1. 在 SSMS 中，使用 Active Directory 網域的使用者名稱和密碼連線到 SSAS。

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

1. 找到連線字串，更新使用者名稱和密碼，為來源 SQL 資料庫提供存取權。這是處理 SSAS 物件的必要操作。

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

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

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

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

   1. 若使用多維度模式，請執行下列操作：

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

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

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

1. 開啟您所建立之 SSAS 資料庫的內容 (按一下滑鼠右鍵) 功能表，然後選擇 **Process Database (處理資料庫)**。

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

**Topics**
+ [為 SSAS 設定通過 Windows 驗證的使用者](#SSAS.Use.Auth)
+ [新增網域使用者做為資料庫管理員](#SSAS.Admin)
+ [建立 SSAS Proxy](#SSAS.Use.Proxy)
+ [使用 SQL Server Agent 排程 SSAS 資料庫處理作業](#SSAS.Use.Schedule)
+ [從 Proxy 撤銷 SSAS 存取權](#SSAS.Use.Revoke)

## 為 SSAS 設定通過 Windows 驗證的使用者
<a name="SSAS.Use.Auth"></a>

主要管理員使用者 (又稱為主要使用者) 可以使用下列程式碼範例，設定通過 Windows 驗證的登入資料，並授予必要的程序許可。這樣做會為網域使用者授予許可，允許執行 SSAS 客戶任務、使用 S3 檔案傳輸程序、建立憑證以及使用 SQL Server Agent Proxy。如需詳細資訊，請參閱[登入資料 (資料庫引擎)](https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/credentials-database-engine?view=sql-server-ver15) 和 Microsoft 文件中的[建立 SQL Server 代理程式 Proxy](https://docs.microsoft.com/en-us/sql/ssms/agent/create-a-sql-server-agent-proxy?view=sql-server-ver15)。

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

## 新增網域使用者做為資料庫管理員
<a name="SSAS.Admin"></a>

您可以使用下列方式，將網域使用者新增為 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 Proxy
<a name="SSAS.Use.Proxy"></a>

需先建立 SSAS 憑證和 SSAS Proxy，才能使用 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 Proxy**

1. 使用下面的 SQL 陳述式來建立代理。

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

1. 使用下列 SQL 陳述式可將代理伺服器的存取權授予其他使用者。

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

1. 使用下列 SQL 陳述式來提供 SSAS 子系統 Proxy 的存取權。

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

1. 使用下列 SQL 陳述式來檢視子系統授予。

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

## 使用 SQL Server Agent 排程 SSAS 資料庫處理作業
<a name="SSAS.Use.Schedule"></a>

建立憑證和 Proxy，並授予 SSAS Proxy 的存取權後，就可以建立 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) 端點 (`your-DB-instance-name.your-AD-domain-name`)。若使用外部資料庫執行個體，請務必正確設定與 RDS 資料庫執行個體相關聯的 VPC 安全群組，以確保安全連線。

  您可以進一步編輯查詢以支援各種 XMLA 作業。SQL Server Agent 任務建立後，可直接修改 T-SQL 查詢或使用 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
  ```

## 從 Proxy 撤銷 SSAS 存取權
<a name="SSAS.Use.Revoke"></a>

您可以撤銷 SSAS 子系統的存取權，並使用下列預存程序刪除 SSAS Proxy。

**撤銷存取權並刪除代理伺服器**

1. 撤銷子系統存取權。

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

1. 撤銷代理上的授權。

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

1. 刪除代理。

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

# 備份 SSAS 資料庫
<a name="SSAS.Backup"></a>

您只能在資料庫執行個體的 `D:\S3` 資料夾中建立 SSAS 資料庫備份檔案。若要將備份檔案移至 S3 儲存貯體，請使用 Amazon S3。

您可以依照以下方式備份 SSAS 資料庫：
+ 具有特定資料庫 `admin` 角色的網域使用者，可以使用 SSMS 將資料庫備份至 `D:\S3` 資料夾。

  如需更多詳細資訊，請參閱 [新增網域使用者做為資料庫管理員](SSAS.Use.md#SSAS.Admin)。
+ 您可以使用下列預存程序。預存程序不支援加密。

  ```
  exec msdb.dbo.rds_msbi_task
  @task_type='SSAS_BACKUP_DB',
  @database_name='myssasdb',
  @file_path='D:\S3\ssas_db_backup.abf',
  [@ssas_apply_compression=1],
  [@ssas_overwrite_file=1];
  ```

  下列是必要參數：
  + `@task_type` – MSBI 任務的類型，在此案例中為 `SSAS_BACKUP_DB`。
  + `@database_name`– 您要備份之 SSAS 資料庫的名稱。
  + `@file_path`– SSAS 備份檔案的路徑。`.abf` 副檔名為必要項目。

  下列是選用參數：
  + `@ssas_apply_compression` – 是否要套用 SSAS 備份壓縮。有效值為 1 (是) 和 0 (否)。
  + `@ssas_overwrite_file` – 是否覆寫 SSAS 備份檔案。有效值為 1 (是) 和 0 (否)。

# 還原 SSAS 資料庫
<a name="SSAS.Restore"></a>

使用下列預存程序從備份還原 SSAS 資料庫。

如果存在具有相同名稱的現有 SSAS 資料庫，則無法還原資料庫。還原的預存程序不支援加密的備份檔案。

```
exec msdb.dbo.rds_msbi_task
@task_type='SSAS_RESTORE_DB',
@database_name='mynewssasdb',
@file_path='D:\S3\ssas_db_backup.abf';
```

下列是必要參數：
+ `@task_type` – MSBI 任務的類型，在此案例中為 `SSAS_RESTORE_DB`。
+ `@database_name` – 您要還原的新 SSAS 資料庫名稱。
+ `@file_path` – SSAS 備份檔案的路徑。

## 將資料庫執行個體還原至指定的時間
<a name="SSAS.PITR"></a>

時間點復原 (PITR) 不適用於 SSAS 資料庫。如果您執行 PITR，則已還原執行個體只能使用所要求時間之前最後一個快照中的 SSAS 資料。

**在已還原資料庫執行個體上擁有最新的 SSAS 資料庫**

1. 將 SSAS 資料庫備份到來源執行個體上的 `D:\S3` 資料夾。

1. 將備份檔案傳輸到 S3 儲存貯體。

1. 將備份檔案從 S3 儲存貯體傳輸到已還原執行個體上的 `D:\S3` 資料夾。

1. 執行預存程序，將 SSAS 資料庫還原到還原的執行個體。

   您也可以重新處理 SSAS 專案，以還原資料庫。

# 變更 SSAS 模式
<a name="SSAS.ChangeMode"></a>

您可以變更 SSAS 執行的模式 (表格或多維度)。若要變更模式，請使用 AWS 管理主控台 或 AWS CLI 來修改 SSAS 選項中的選項設定。

**重要**  
一次只能使用一種 SSAS 模式。變更模式之前請務必刪除所有 SSAS 資料庫，否則會收到錯誤訊息。

## 主控台
<a name="SSAS.ChangeMode.CON"></a>

以下 Amazon RDS 主控台程序將 SSAS 模式變更為「表格」，並將 `MAX_MEMORY` 參數設為 70%。

**修改 SSAS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您想修改具有 `SSAS` 選項的選項群組 (上述範例中的 `ssas-se-2017`)。

1. 選擇 **Modify option** (修改選項)。

1. 變更選項設定：

   1. 為 **Max memory** (最大記憶體) 輸入 **70**。

   1. 為 **Mode** (模式) 選擇**表格**。

1. 選擇 **Modify option** (修改選項)。

## AWS CLI
<a name="SSAS.ChangeMode.CLI"></a>

以下 AWS CLI 範例將 SSAS 模式變更為「表格」，並將 `MAX_MEMORY` 參數設為 70%。

為了讓 CLI 命令正常運作，即使沒有要修改，也務必包含所有必要參數。

**修改 SSAS 選項**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds add-option-to-option-group \
      --option-group-name ssas-se-2017 \
      --options "OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}]" \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds add-option-to-option-group ^
      --option-group-name ssas-se-2017 ^
      --options OptionName=SSAS,VpcSecurityGroupMemberships=sg-12345e67,OptionSettings=[{Name=MAX_MEMORY,Value=70},{Name=MODE,Value=Tabular}] ^
      --apply-immediately
  ```

# 關閉 SSAS
<a name="SSAS.Disable"></a>

若要關閉 SSAS，請從其選項群組中移除 `SSAS` 選項。

**重要**  
移除 `SSAS` 選項之前，請先刪除您的 SSAS 資料庫。  
我們強烈建議您先備份 SSAS 資料庫，然後再刪除它們並移除 `SSAS` 選項。

## 主控台
<a name="SSAS.Disable.Console"></a>

**從選項群組中移除 SSAS 選項**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您想移除具有 `SSAS` 選項的選項群組 (上述範例中的 `ssas-se-2017`)。

1. 選擇 **Delete option (刪除選項)**。

1. 在 **Deletion options (刪除選項)** 下，選擇 **SSAS** 作為 **Options to delete (要刪除的選項)**。

1. 在 **Apply immediately (立即套用)** 下，選擇 **Yes (是)** 立即刪除選項，或選擇 **No (否)** 在下一個維護時段將其刪除。

1. 選擇 **刪除**。

## AWS CLI
<a name="SSAS.Disable.CLI"></a>

**從選項群組中移除 SSAS 選項**
+ 請使用下列其中一個命令。  
**Example**  

  針對 Linux、macOS 或 Unix：

  ```
  aws rds remove-option-from-option-group \
      --option-group-name ssas-se-2017 \
      --options SSAS \
      --apply-immediately
  ```

  針對 Windows：

  ```
  aws rds remove-option-from-option-group ^
      --option-group-name ssas-se-2017 ^
      --options SSAS ^
      --apply-immediately
  ```

# 疑難排解 SSAS 問題
<a name="SSAS.Trouble"></a>

使用 SSAS 時可能會遇到下列問題。


| 問題 | Type | 故障診斷建議 | 
| --- | --- | --- | 
| 無法設定 SSAS 選項。要求的 SSA 模式為 new\$1mode，但目前的資料庫執行個體具有數目個 current\$1mode 資料庫。先刪除現有資料庫，再切換到 new\$1mode 模式。若要重新取得 current\$1mode 模式的存取權，可以更新目前的資料庫選項群組，或者連接新的選項群組 (SSAS 選項的 MODE 選項設定值使用 %s)。 | RDS 事件 | 如果仍有 SSAS 資料庫使用目前模式，就無法變更 SSAS 模式。刪除 SSAS 資料庫，然後再試一次。 | 
| 無法移除 SSAS 選項，因為有數目個現有的模式資料庫。在刪除所有 SSAS 資料庫之前，無法移除 SSAS 選項。再次新增 SSAS 選項，刪除所有 SSAS 資料庫然後重試。 | RDS 事件 | 如果您仍有 SSAS 資料庫，就無法關閉 SSAS。刪除 SSAS 資料庫，然後再試一次。 | 
| SSAS 選項未啟用，或正在進行啟用作業。請稍後再試。 | RDS 預存程序 | 當選項處於關閉狀態或進行開啟作業時，無法執行 SSAS 預存程序。 | 
| SSAS 選項設定不正確。確認選項群組成員資格狀態為 "in-sync"，並檢閱 RDS 事件日誌中的相關 SSAS 組態錯誤訊息。進行這些調查之後，請再試一次。如果錯誤持續出現，請聯絡 AWS Support。 | RDS 預存程序 |  若選項群組成員資格不處於 `in-sync` 狀態，就無法執行 SSAS 預存程序。這會導致 SSAS 選項處於錯誤的組態狀態。 如果您的選項群組成員資格狀態由於 SSAS 選項修改而變更為 `failed`，可能有兩個原因： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/SSAS.Trouble.html) 重新設定 SSAS 選項，因為 RDS 一次只允許使用一種 SSAS 模式，且不支援在 SSAS 資料庫存在的情況下刪除 SSAS 選項。 檢查 RDS 事件日誌中的 SSAS 執行個體組態錯誤，並視情況解決些問題。  | 
| 部署失敗。變更只能部署在執行 deployment\$1file\$1mode 模式的伺服器上。目前的伺服器模式為 current\$1mode。 | RDS 預存程序 |  無法將表格模式的資料庫部署到多維度模式的伺服器，也不能將多維度模式資料庫部署到表格模式伺服器。 請確認您使用的是模式正確的檔案，然後驗證 `MODE` 選項設定設為適當的值。  | 
| 還原失敗。備份檔案只能在執行 restore\$1file\$1mode 模式的伺服器上還原。目前的伺服器模式為 current\$1mode。 | RDS 預存程序 |  無法將表格模式的資料庫還原到多維度模式的伺服器，也不能將多維度模式資料庫還原到表格模式伺服器。 請確認您使用的是模式正確的檔案，然後驗證 `MODE` 選項設定設為適當的值。  | 
| 還原失敗。備份檔案和 RDS 資料庫執行個體版本不相容。 | RDS 預存程序 |  無法還原與 SQL Server 執行個體版本不相容的 SSAS 資料庫版本。 如需詳細資訊，請參閱 Microsoft 說明文件中的[表格模式的相容性層級](https://docs.microsoft.com/en-us/analysis-services/tabular-models/compatibility-level-for-tabular-models-in-analysis-services)和[多維度資料庫的相容性層級](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/compatibility-level-of-a-multidimensional-database-analysis-services)。  | 
| 還原失敗。還原作業中指定的備份檔案已損毀或非 SSAS 備份檔案。確認 @rds\$1file\$1path 的格式正確。 | RDS 預存程序 |  無法還原具有損毀檔案的 SSAS 資料庫。 請確認檔案未損毀或損壞。 若 `@rds_file_path` 格式不正確 (例如含有雙反斜槓，如 `D:\S3\\incorrect_format.abf` 中所述)，也可能出現此錯誤。  | 
| 還原失敗。還原的資料庫名稱不能包含任何保留字詞或以下無效字元：. , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < >>，長度也不能超過 100 個字元。 | RDS 預存程序 |  還原的資料庫名稱不能包含任何保留字詞，長度也不能超過 100 個字元。 如需 SSAS 物件命名慣例，請參閱　Microsoft 說明文件中的[物件命名規則](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services)。  | 
| 提供的角色名稱無效。角色名稱不能包含任何保留的字串。 | RDS 預存程序 |  角色名稱不能包含任何保留的字串。 如需 SSAS 物件命名慣例，請參閱　Microsoft 說明文件中的[物件命名規則](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services)。  | 
| 提供的角色名稱無效。角色名稱不能包含以下任何保留字元：. , ; ' ` : / \$1\$1 \$1 \$1 ? \$1" & % \$1 \$1 \$1 = ( ) [ ] \$1 \$1 < > | RDS 預存程序 |  角色名稱不能包含任何保留字元。 如需 SSAS 物件命名慣例，請參閱　Microsoft 說明文件中的[物件命名規則](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/object-naming-rules-analysis-services)。  | 