

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 时，请将该文件上传到您的 Su AWS pport 案例中。有关上传此文件的更多信息，请参阅[在中使用诊断支持脚本 AWS DMS](CHAP_SupportScripts.md)。

对于 Amazon RDS for SQL Server，您无法使用 sqlcmd 命令行实用程序进行连接，因此请使用以下过程。

**运行适用于 RDS SQL Server 数据库的脚本**

1. 使用任何允许您以 `Master` 用户身份连接到 RDS SQL Server 的客户端工具运行脚本，并将输出保存为 HTML 文件。

1. 您可以查看输出 HTML 文件并删除任何不愿意分享的信息。当您可以共享 HTML 时，请将该文件上传到您的 Su AWS pport 案例中。有关上传此文件的更多信息，请参阅[在中使用诊断支持脚本 AWS DMS](CHAP_SupportScripts.md)。