使用 AWS Schema Conversion Tool 连接 Microsoft SQL Server - AWS Schema Conversion Tool

使用 AWS Schema Conversion Tool 连接 Microsoft SQL Server

您可以使用 AWS SCT 将架构、数据库代码对象和应用程序代码从 SQL Server 转换到以下目标:

  • Amazon RDS for MySQL

  • Amazon Aurora MySQL 兼容版

  • Amazon RDS for PostgreSQL

  • Amazon Aurora PostgreSQL 兼容版

  • Amazon RDS for SQL Server

  • Amazon RDS for MariaDB

注意

AWS SCT 不支持将 Amazon RDS for SQL Server 作为源。

您可以使用 AWS SCT 创建评估报告,用于评估将架构、数据库代码对象和应用程序代码从 SQL Server 迁移到适用于 Aurora PostgreSQL 的 Babelfish 的结果,如下所述。

将 Microsoft SQL Server 用作源的权限

下面列出了将 Microsoft SQL Server 用作源所需的权限:

  • VIEW DEFINITION

  • VIEW DATABASE STATE

VIEW DEFINITION 权限允许具有公共访问权限的用户查看对象定义。AWS SCT 使用 VIEW DATABASE STATE 权限检查 SQL Server 企业版的功能。

对要转换其架构的每个数据库重复以上授权。

此外,授予针对 master 数据库的以下权限:

  • VIEW SERVER STATE

  • VIEW ANY DEFINITION

AWS SCT 使用 VIEW SERVER STATE 权限收集服务器设置和配置。确保授予 VIEW ANY DEFINITION 权限以便查看端点。

要读取有关 Microsoft Analysis Services 的信息,请在 master 数据库上运行以下命令。

EXEC master..sp_addsrvrolemember @loginame = N'<user_name>', @rolename = N'sysadmin'

在上述示例中,将 <user_name> 占位符替换为您之前授予权限的用户名。

要阅读有关 SQL Server Agent 的信息,请将用户添加到 SQLAgentUser 角色中。在 msdb 数据库上运行以下命令。

EXEC sp_addrolemember <SQLAgentRole>, <user_name>;

在上述示例中,将 <SQLAgentRole> 占位符替换为 SQL Server Agent 角色的名称。然后将 <user_name> 占位符替换为您之前授予权限的用户名。有关更多信息,请参阅《Amazon RDS 用户指南》中的将用户添加到 SQLAgentUser 角色

要检测日志传输,请授予针对 msdb 数据库的 SELECT on dbo.log_shipping_primary_databases 权限。

要使用 DDL 复制的通知方法,请授予针对源数据库的 RECEIVE ON <schema_name>.<queue_name> 权限。在本例中,将 <schema_name> 占位符替换为数据库的架构名称。然后,将 <queue_name> 占位符替换为队列表的名称。

当将 Microsoft SQL Server 用作源时使用 Windows 身份验证

如果您的应用程序在基于 Windows 的 Intranet 上运行,您可能可以使用 Windows 身份验证进行数据库访问。Windows 身份验证使用在操作系统线程上建立的当前 Windows 身份来访问 SQL Server 数据库。然后,您可以将 Windows 身份映射到 SQL Server 数据库和权限。要使用 Windows 身份验证连接到 SQL Server,您必须指定您的应用程序正在使用的 Windows 身份。您还必须向 Windows 身份授予访问 SQL Server 数据库的权限。

SQL Server 有两种访问模式:Windows 身份验证模式和混合模式。Windows 身份验证模式启用 Windows 身份验证,禁用 SQL Server 身份验证。混合模式启用 Windows 身份验证和 SQL Server 身份验证。Windows 身份验证是始终可用的,无法禁用。有关 Windows 身份验证的更多信息,请参阅 Microsoft Windows 文档。

在 TEST_DB 中创建用户的可能示例如下所示。

USE [TEST_DB] CREATE USER [TestUser] FOR LOGIN [TestDomain\TestUser] GRANT VIEW DEFINITION TO [TestUser] GRANT VIEW DATABASE STATE TO [TestUser]

将 Windows 身份验证与 JDBC 连接配合使用

在非 Windows 操作系统上使用 JDBC 驱动程序时,驱动程序不支持 Windows 身份验证。当从非 Windows 操作系统连接到 SQL Server 时,不会自动指定 Windows 身份验证凭证,例如用户名和密码。在这种情况下,应用程序必须改而使用 SQL Server 身份验证。

在 JDBC 连接字符串中,必须指定参数 integratedSecurity ,才能使用 Windows 身份验证进行连接。JDBC 驱动程序通过 integratedSecurity 连接字符串参数在 Windows 操作系统上支持集成 Windows 身份验证。

使用集成身份验证

  1. 安装 JDBC 驱动程序。

  2. sqljdbc_auth.dll 文件复制到装有 JDBC 驱动程序的计算机上的 Windows 系统路径上的目录中。

    sqljdbc_auth.dll 文件安装在以下位置:

    <安装目录>\sqljdbc_<版本>\<语言>\auth\

当您尝试使用 Windows 身份验证建立与 SQL Server 数据库的连接时,您可能会收到以下错误:此驱动程序未针对集成身份验证进行配置。通过执行以下操作可以解决此问题:

  • 声明两个指向 JDBC 的安装路径的变量:

    variable name: SQLJDBC_HOME; variable value: D:\lib\JDBC4.1\enu(sqljdbc4.jar 所在的位置);

    variable name: SQLJDBC_AUTH_HOME; variable value: D\lib\JDBC4.1\enu\auth\x86(如果您运行的是 32 位操作系统)或 D\lib\JDBC4.1\enu\auth\x64(如果您运行的是 64 位操作系统)。这是 sqljdbc_auth.dll 所在的位置。

  • sqljdbc_auth.dll 复制到 JDK/JRE 正在其中运行的文件夹。您可以复制到 lib 文件夹、bin 文件夹等。例如,您可以复制到以下文件夹。

    [JDK_INSTALLED_PATH]\bin; [JDK_INSTALLED_PATH]\jre\bin; [JDK_INSTALLED_PATH]\jre\lib; [JDK_INSTALLED_PATH]\lib;
  • 确保 JDBC 库文件夹中只有 SQLJDBC4.jar 文件。从该文件夹中删除所有其他 sqljdbc*.jar 文件(或将这些文件复制到其他文件夹)。如果要将驱动程序条件到程序,请确保只添加 SQLJDBC4.jar 以作为驱动程序使用。

  • 在您的应用程序所在的文件夹中复制 sqljdbc_auth.dll 文件。

注意

如果您运行的是 32 位 Java 虚拟机 (JVM),请使用 x86 文件夹中的 sqljdbc_auth.dll 文件,即使操作系统是 x64 版本也是如此。如果您是在 x64 处理器上运行 64 位 JVM ,请使用 x64 文件夹中的 sqljdbc_auth.dll 文件。

当您连接到 SQL Server 数据库时,您可以为身份验证选项选择 Windows 身份验证SQL Server 身份验证

连接到作为源的 SQL Server

使用 AWS Schema Conversion Tool 按照以下过程连接到 Microsoft SQL Server 源数据库。

连接到 Microsoft SQL Server 源数据库
  1. 在 AWS Schema Conversion Tool 中,选择添加源

  2. 选择 Microsoft SQL Server,然后选择下一步

    此时显示添加源对话框。

  3. 对于连接名称,输入数据库的名称。AWS SCT 会在左侧面板的树中显示此名称。

  4. 使用来自 AWS Secrets Manager 的数据库凭证或手动输入:

    • 要使用 Secrets Manager 中的数据库凭证,请按照以下说明进行操作:

      1. 对于 AWS 密钥,请选择密钥的名称。

      2. 选择填充可使用 Secrets Manager 中的数据库凭证自动填写数据库连接对话框中的所有值。

      有关使用 Secrets Manager 中的数据库凭证的信息,请参阅 在 AWS Schema Conversion Tool 中配置 AWS Secrets Manager

    • 要手动输入 Microsoft SQL Server 源数据库连接信息,请按照以下说明进行操作:

      参数 操作
      服务器名称

      输入源数据库服务器的域名服务 (DNS) 名称或 IP 地址。

      您可以使用 IPv6 地址协议连接到源 SQL Server 数据库。为此,请确保使用方括号输入 IP 地址,如以下示例所示。

      [2001:db8:ffff:ffff:ffff:ffff:ffff:fffe]
      服务器端口

      输入用于连接到源数据库服务器的端口。

      实例名称

      输入 SQL Server 数据库的实例名称。要找到实例名称,请在您的 SQL Server 数据库上运行查询 SELECT @@servername;

      身份验证

      Windows 身份验证SQL Server 身份验证中选择身份验证类型。

      用户名密码

      输入数据库凭证,以便连接到源数据库服务器。

      仅当您选择连接到项目中的数据库时,AWS SCT 才使用密码连接到源数据库。为了避免泄露源数据库的密码,AWS SCT 不会默认存储该密码。如果您关闭了 AWS SCT 项目并重新打开它,系统会根据需要提示您输入用于连接到源数据库的密码。

      使用 SSL

      选择此选项以使用安全套接字层 (SSL) 连接到数据库。在 SSL 选项卡上提供以下其他信息(如适用):

      • 信任服务器证书:选择此选项以信任服务器证书。

      • 信任存储:包含证书的信任存储的位置。要使此位置显示在全局设置部分,请务必将其添加。

      存储密码

      AWS SCT 将创建一个安全文件库,用于存储 SSL 证书和数据库密码。启用此选项可让您存储数据库密码并在不需要输入密码的情况下快速连接到数据库。

      SQL Server 驱动程序路径

      输入用于连接到源数据库的驱动程序的路径。有关更多信息,请参阅 为 AWS Schema Conversion Tool 安装 JDBC 驱动程序

      如果您将驱动程序路径存储在全局项目设置中,则驱动程序路径不会显示在连接对话框中。有关更多信息,请参阅 在全局设置中存储驱动程序路径

      Windows 身份验证库

      输入 sqljdbc_auth.dll 文件的路径。默认情况下,此文件安装在以下位置:

      <installation directory of the JDBC driver>sqljdbc_<version>\<language>\auth\

  5. 选择测试连接以验证 AWS SCT 是否可以连接到源数据库。

  6. 选择连接以连接到源数据库。