转换 MySQL 数据库 (MySQLToSQL)
连接到 MySQL、连接到 SQL Server 或 Azure SQL 并设置项目和数据映射选项后,可以使用 mySQL 的 SQL Server 迁移助手 (SSMA) 将 MySQL 数据库对象转换为 SQL Server 或Azure SQL 数据库对象。
转换过程
转换数据库对象时,会从 MySQL 中获取对象定义,将这些定义转换为类似的 SQL Server 或 Azure SQL 对象,然后将此信息加载到 SSMA 元数据。 它不会将信息加载到 SQL Server 的实例中。 然后,可使用 SQL Server 或 SQL Azure 元数据资源管理器查看对象及其属性。
在转换期间,SSMA 会将输出消息输出到“输出”窗格,并将错误消息输出到“错误列表”窗格。 使用输出和错误信息来确定是否必须修改 MySQL 数据库或转换过程以获取所需的转换结果。
设置转换选项
在转换对象之前,查看“项目设置”对话框中的项目转换选项。 使用此对话框可以设置 SSMA 如何转换表和索引。 有关详细信息,请参阅“项目设置(转换)”。
转换规则
下表显示了已转换哪些 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 使用映射 My SQL 数据库 到 SQL Server 架构,将对象从 MySQL 数据库映射到相应的 SQL Server 数据库/架构对。 |
触发器转换 | SSMA 基于以下规则创建触发器: - BEFORE 触发器转换为 INSTEAD OF T-SQL 触发器。 - AFTER 触发器转换为 AFTER T-SQL 触发器,每行可进行/不进行迭代。 |
视图转换 | SSMA 创建具有依赖对象的视图。 |
语句转换 | - 每个 SQL 语句对象可能包含单个 MySQL 语句(如 DDL、DML 和其他类型的语句)或 BEGIN ...END 块。 - 在 MultiStatement 转换:BEGIN 中...END 块转换,SQL 语句还可以包含 BEGIN ...END 块,如过程、函数或触发器定义中的一个。 这些块的转换方式应与为单个 MySQL 语句对象转换的方式相同。 |
转换 MySQL 数据库对象
要转换 MySQL 数据库对象,首先选择要转换的对象,然后让 SSMA 执行转换。 要在转换期间查看输出消息,请在“视图”菜单上选择“输出”。
将 MySQL 对象转换为 SQL Server 或 Azure SQL 语句
在 MySQL 元数据资源管理器中,展开 MySQL 服务器,然后展开“数据库”。
选择要转换的对象:
要转换所有架构,请选中“数据库”旁边的复选框。
要转换或省略数据库,请选中数据库名旁的复选框。
要转换或省略对象类别,请展开架构,然后选择或清除类别旁边的复选框。
要转换或省略单个对象,请展开类别文件夹,然后选择或清除对象旁边的复选框。
要转换所有选定的对象,请右键单击“数据库”,然后选择“转换架构”。
还可以通过右键单击对象或其父文件夹,然后选择“转换架构”来转换单个对象或对象类别。
查看转换问题
有些 MySQL 对象可能无法转换。 可以通过查看摘要转换报告,来确定转换成功率。
查看摘要报告
在 MySQL 元数据资源管理器中,选择“数据库”。
在右侧窗格中选择“报告”选项卡。
此报表显示已评估或转换的所有数据库对象的摘要评估报告。 还可以查看各个对象的摘要报告:
要查看单个架构的报告,请在 MySQL 元数据资源管理器中选择数据库。
要查看单个对象的报告,请在 MySQL 元数据资源管理器中选择该对象。 存在转换问题的对象具有一个红色的错误图标。
对于转换失败的对象,您可以查看导致转换失败的语法。
查看单个转换问题
在 MySQL 元数据资源管理器中,展开“数据库”。
展开显示红色错误图标的数据库。
在数据库的下方,展开显示红色错误图标的文件夹。
选择显示红色错误图标的对象。
在右侧窗格中选择“报告”选项卡。
在“报表”选项卡顶部是一个下拉列表。 如果此列表显示“统计信息”,请将所选内容更改为“源”。
SSMA 将在代码的正上方显示源代码和几个按钮。
选择“下一问题”按钮。 这是带有向右箭头的红色错误图标。
SSMA 将突出显示它在当前对象中找到的第一个存在问题的源代码。
对于无法转换的每个项目,必须确定要对该对象执行的操作:
可以修改 MySQL 数据库中的对象,以删除或修改有问题的代码。 要将更新的代码加载到 SSMA 中,必须更新元数据。 有关详细信息,请参阅 “连接到 MySQL”
可将对象从迁移中排除。 在将对象加载到 SQL Server 或 Azure SQL 中并从 MySQL 迁移数据之前,在 SQL Server 或 SQL Azure 元数据资源管理器和 MySQL 元数据资源管理器中,清除项目旁边的复选框。