

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

# SQL Server 診斷支援指令碼
<a name="CHAP_SupportScripts.SQLServer"></a>

您可以在下面找到診斷支援指令碼的說明，可用於在 AWS DMS 遷移組態中分析內部部署或 Amazon RDS for SQL Server 資料庫。這些指令碼可與來源或目標端點搭配使用。對於內部部署資料庫，請在 sqlcmd 命令列公用程式中執行這些指令碼。如需使用此公用程式的相關資訊，請參閱 Microsoft 說明文件中的 [sqlcmd - 使用公用程式](https://docs.microsoft.com/en-us/sql/ssms/scripting/sqlcmd-use-the-utility?view=sql-server-ver15)。

對於 Amazon RDS 資料庫，您無法使用 sqlcmd 命令列公用程式進行連線。而是使用任何連線到 Amazon RDS SQL Server 的用戶端工具來執行這些指令碼。

在執行指令碼之前，請確定您使用的使用者帳戶具有存取 SQL Server 資料庫的必要許可。對於內部部署和 Amazon RDS 資料庫，您可以使用與存取 SQL Server 資料庫相同的許可，而不需要使用 `SysAdmin` 角色。

**Topics**
+ [設定內部部署 SQL Server 資料庫的最低許可](#CHAP_SupportScripts.SQLServer.onprem)
+ [設定 Amazon RDS SQL Server 資料庫的最低許可](#CHAP_SupportScripts.SQLServer.rds)
+ [SQL Server 支援指令碼](#CHAP_SupportScripts.SQLServer.Scripts)

## 設定內部部署 SQL Server 資料庫的最低許可
<a name="CHAP_SupportScripts.SQLServer.onprem"></a>

**若要設定針對內部部署 SQL Server 資料庫執行的最低許可**

1. 使用 SQL Server Management Studio (SSMS) 建立有密碼驗證的新 SQL Server 帳戶，例如 `on-prem-user`。

1. 在 SSMS 的**使用者對應**區段中，選擇 **MSDB** 和 **MASTER** 資料庫 (提供公有許可)，並指派您想要執行此指令碼之資料庫的 `DB_OWNER` 角色。

1. 開啟新帳戶的內容 (按一下滑鼠右鍵) 選單，選擇**安全**並明確授予 `Connect SQL` 權限。

1. 執行下列授予命令。

   ```
   GRANT VIEW SERVER STATE TO on-prem-user;
   USE MSDB;
   GRANT SELECT ON MSDB.DBO.BACKUPSET TO on-prem-user;
   GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO on-prem-user;
   GRANT SELECT ON MSDB.DBO.BACKUPFILE TO on-prem-user;
   ```

## 設定 Amazon RDS SQL Server 資料庫的最低許可
<a name="CHAP_SupportScripts.SQLServer.rds"></a>

**若要使用 Amazon RDS SQL Server 資料庫的最低許可執行**

1. 使用 SQL Server Management Studio (SSMS) 建立有密碼驗證的新 SQL Server 帳戶，例如 `rds-user`。

1. 在 SSMS 的**使用者對應**區段中，選擇 **MSDB** 資料庫 (提供公有許可)，並指派您想要執行此指令碼之資料庫的 `DB_OWNER` 角色。

1. 開啟新帳戶的內容 (按一下滑鼠右鍵) 選單，選擇**安全**並明確授予 `Connect SQL` 權限。

1. 執行下列授予命令。

   ```
   GRANT VIEW SERVER STATE TO rds-user;
   USE MSDB;
   GRANT SELECT ON MSDB.DBO.BACKUPSET TO rds-user;
   GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO rds-user;
   GRANT SELECT ON MSDB.DBO.BACKUPFILE TO rds-user;
   ```

## SQL Server 支援指令碼
<a name="CHAP_SupportScripts.SQLServer.Scripts"></a>

下列主題說明如何下載、檢閱及執行適用於 SQL Server 的每個支援指令碼。其中也會說明如何檢閱指令碼輸出，並將其上傳至 AWS Support 案例。

**Topics**
+ [awsdms\$1support\$1collector\$1sql\$1server.sql 指令碼](#CHAP_SupportScripts.SQLServer.Awsdms_Support_Collector_SQLServer_Script)

### awsdms\$1support\$1collector\$1sql\$1server.sql 指令碼
<a name="CHAP_SupportScripts.SQLServer.Awsdms_Support_Collector_SQLServer_Script"></a>

下載 [https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_sql_server.sql](https://d2pwp9zz55emqw.cloudfront.net/scripts/awsdms_support_collector_sql_server.sql) 指令碼。

**注意**  
只在 SQL Server 2014 及更高版本上執行此 SQL Server 診斷支援指令碼。

這個指令碼會收集 SQL Server 資料庫組態的相關資訊。請記得驗證指令碼上的總和檢查，且如果總和檢查已驗證，請檢閱指令碼中的 SQL 程式碼，將您不希望執行的任何程式碼加上註解。您對指令碼的完整性和內容感到滿意之後，就可以執行該指令碼。

**若要執行內部部署 SQL Server 資料庫的指令碼**

1. 使用以下 sqlcmd 命令列來執行此指令碼。

   ```
   sqlcmd -Uon-prem-user -Ppassword -SDMS-SQL17AG-N1 -y 0 
   -iC:\Users\admin\awsdms_support_collector_sql_server.sql -oC:\Users\admin\DMS_Support_Report_SQLServer.html -dsqlserverdb01
   ```

   指定的 sqlcmd 命令參數包含下列各項：
   + `-U` – 資料庫使用者名稱。
   + `-P` – 資料庫使用者密碼。
   + `-S` – SQL Server 資料庫伺服器名稱。
   + `-y`— 從 sqlcmd 公用程式輸出的資料欄最大寬度。值 0 指定無限寬度的資料欄。
   + `-i` – 要執行的支援指令碼路徑 (在此情況下為 `awsdms_support_collector_sql_server.sql`)。
   + `-o` – 含有您指定之檔案名稱的輸出 HTML 檔案路徑，其中包含收集的資料庫組態資訊。
   + `-d` – SQL Server 資料庫名稱。

1. 指令碼完成後，請檢閱輸出的 HTML 檔案，並移除您不希望分享的任何資訊。當 HTML 可供您共用時，請將檔案上傳至您的 AWS 支援案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。

使用 Amazon RDS for SQL Server 時，您無法使用 sqlcmd 命令列公用程式進行連線，因此請使用下列程序。

**若要執行 RDS SQL Server 資料庫的指令碼**

1. 使用任何可讓您以 `Master` 使用者身分連線到 RDS SQL Server 的用戶端工具來執行指令碼，並將輸出儲存為 HTML 檔案。

1. 檢閱輸出的 HTML 檔案，並移除您不希望分享的任何資訊。當 HTML 可供您共用時，請將檔案上傳至您的 AWS 支援案例。如需上傳此檔案的詳細資訊，請參閱[在 中使用診斷支援指令碼 AWS DMS](CHAP_SupportScripts.md)。