转换 MySQL 数据库 (MySQLToSQL)

连接到 MySQL、连接到 SQL Server 或 Azure SQL 并设置项目和数据映射选项之后,可以将 MySQL 数据库对象转换为 SQL Server 或 Azure SQL 数据库对象。

转换过程

转换数据库对象时,会从 MySQL 中获取对象定义,将这些定义转换为类似的 SQL Server 或 Azure SQL 对象,然后将此信息加载到 SSMA 元数据。 它不会将信息加载到 SQL Server 的实例中。 然后,可使用 SQL Server 或 SQL Azure 元数据资源管理器查看对象及其属性。

在转换期间,SSMA 会将输出消息打印到“输出”窗格,并将错误消息打印到“错误列表”窗格。 使用输出和错误信息来确定是否必须修改 MySQL 数据库或转换过程以获取所需的转换结果。

设置转换选项

在转换对象之前,查看“项目设置”对话框中的项目转换选项。 使用此对话框可以设置 SSMA 如何转换表和索引。 有关详细信息,请参阅项目设置(转换)(MySQLToSQL)

转换规则

下表显示了已转换哪些 MySQL 对象,以及生成的 SQL Server 对象:

MySQL 对象 生成的 SQL Server 对象
具有依赖对象(如索引)的表 SSMA 创建具有依赖对象的表。 使用所有索引和约束转换表。 索引转换为单独的 SQL Server 对象。

空间数据类型映射只能在表节点级别执行。

有关表转换设置的更多信息,请参阅转换设置
函数 如果函数可以直接转换为 Transact-SQL,SSMA 将创建一个函数。 在某些情况下,必须将函数转换为存储过程。 这可以通过在项目设置中使用“函数转换”来完成。 在这种情况下,SSMA 将创建一个存储过程和一个用来调用存储过程的函数。

给定的选项:

- 根据项目设置进行转换
- 转换为函数
- 转换为存储过程

有关函数转换设置的更多信息,请参阅转换设置
过程 如果过程可以直接转换为 Transact-SQL,SSMA 将创建一个存储过程。 在某些情况下,必须在自治事务中调用存储过程。 在这种情况下,SSMA 将创建两个存储过程:一个用于实现过程,另一个用于调用正在实现的存储过程。
数据库转换 SSMA for MySQL 不会直接将 MySQL 对象转换为数据库。 MySQL 数据库被处理得更像是架构名,所有物理参数在转换期间都会丢失。 SSMA for MySQL 使用将 MySQL 数据库映射到 SQL Server 架构 (MySQLToSQL) 将对象从 MySQL 数据库映射到相应的 SQL Server 数据库/架构对。
触发器转换 SSMA 基于以下规则创建触发器:

- BEFORE 触发器转换为 INSTEAD OF T-SQL 触发器。
- AFTER 触发器转换为 AFTER T-SQL 触发器,每行可进行/不进行迭代。
视图转换 SSMA 创建具有依赖对象的视图。
语句转换 - 每个 SQL 语句对象可能包含单个 MySQL 语句(如 DDL、DML 和其他类型的语句)或 BEGIN ...END 块。
- 在 MultiStatement Conversion:BEGIN ... END 块转换中,SQL 语句还可以包含 BEGIN ...END 块,如过程、函数或触发器定义中的一个。 这些块的转换方式应与为单个 MySQL 语句对象转换的方式相同。

转换 MySQL 数据库对象

要转换 MySQL 数据库对象,首先选择要转换的对象,然后让 SSMA 执行转换。 要在转换期间查看输出消息,请在“视图”菜单上选择“输出”

将 MySQL 对象转换为 SQL Server 或 Azure SQL 语句

  1. 在 MySQL 元数据资源管理器中,展开 MySQL 服务器,然后展开“数据库”

  2. 选择要转换的对象:

    • 要转换所有架构,请选中“数据库”旁边的复选框。

    • 要转换或省略数据库,请选中数据库名旁的复选框。

    • 要转换或省略对象类别,请展开架构,然后选择或清除类别旁边的复选框。

    • 要转换或省略单个对象,请展开类别文件夹,然后选择或清除对象旁边的复选框。

  3. 要转换所有选定的对象,请右键单击“数据库”,然后选择“转换架构”

    还可以通过右键单击对象或其父文件夹,然后选择“转换架构”来转换单个对象或对象类别。

查看转换问题

有些 MySQL 对象可能无法转换。 可以通过查看摘要转换报告,来确定转换成功率。

查看摘要报告

  1. 在 MySQL 元数据资源管理器中,选择“数据库”

  2. 在右侧窗格中选择“报告”选项卡。

    此报告显示已评估或转换的所有数据库对象的摘要评估报告。 还可以查看各个对象的摘要报告:

    • 要查看单个架构的报告,请在 MySQL 元数据资源管理器中选择数据库。

    • 要查看单个对象的报告,请在 MySQL 元数据资源管理器中选择该对象。 存在转换问题的对象具有一个红色的错误图标。

对于转换失败的对象,您可以查看导致转换失败的语法。

查看单个转换问题

  1. 在 MySQL 元数据资源管理器中,展开“数据库”

  2. 展开显示红色错误图标的数据库。

  3. 在数据库的下方,展开显示红色错误图标的文件夹。

  4. 选择显示红色错误图标的对象。

  5. 在右侧窗格中选择“报告”选项卡。

  6. 在“报告”选项卡顶部是下拉列表。 如果此列表显示“统计信息”,请将所选内容更改为“源”

    SSMA 将在代码的正上方显示源代码和几个按钮。

  7. 选择“下一问题”按钮。 这是一个红色的错误图标,具有一个指向右侧的箭头。

    SSMA 将突出显示它在当前对象中找到的第一个存在问题的源代码。

对于无法转换的每个项目,必须确定要对该对象执行的操作:

  • 可以修改 MySQL 数据库中的对象,以删除或修改有问题的代码。 要将更新的代码加载到 SSMA 中,必须更新元数据。 有关详细信息,请参阅连接到 MySQL (MySQLToSQL)

  • 可将对象从迁移中排除。 在将对象加载到 SQL Server 或 Azure SQL 中并从 MySQL 迁移数据之前,在 SQL Server 或 SQL Azure 元数据资源管理器和 MySQL 元数据资源管理器中,清除项目旁边的复选框。

另请参阅

后续步骤