转换 Db2 架构 (Db2ToSQL)

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

转换过程

转换数据库对象采用 Db2 中的对象定义,将其转换为类似的 SQL Server 对象,然后将此信息加载到 SQL Server 迁移助手 (SSMA) 元数据中。 它不会将信息加载到 SQL Server 的实例中。 然后,可使用 SQL Server 元数据资源管理器查看对象及其属性。

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

设置转换选项

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

转换规则

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

Db2 对象 生成的 SQL Server 对象
数据类型 SSMA 映射除以下类型以外的每种类型:

CLOB:不支持一些使用此类型的本机函数(例如 CLOB_EMPTY()

BLOB:不支持使用此类型的某些本机函数(例如 BLOB_EMPTY()

DBLOB:不支持使用此类型的某些本机函数(例如 DBLOB_EMPTY()
用户定义类型 SSMA 映射以下用户定义的对象:

- 非重复类型
- 结构化类型
- SQL PL 数据类型

注意: 不支持弱游标类型。
特殊寄存器 SSMA 仅映射以下寄存器:

CURRENT TIMESTAMP
CURRENT DATE
CURRENT TIME
CURRENT TIMEZONE
CURRENT USER
SESSION_USERUSER
SYSTEM_USER
CURRENT CLIENT_APPLNAME
CURRENT CLIENT_WRKSTNNAME
CURRENT LOCK TIMEOUT
CURRENT SCHEMA
CURRENT SERVER
CURRENT ISOLATION

其他特殊寄存器不会映射到 SQL Server 语义。
CREATE TABLE SSMA 映射 CREATE TABLE 具有以下例外:

多维聚类分析 (MDC) 表
范围簇表 (RCT)
分区表
分离表
DATA CAPTURE 子句
IMPLICITLY HIDDEN 选择
VOLATILE 选择
CREATE VIEW SSMA 映射 CREATE VIEWWITH LOCAL CHECK OPTION 但其他选项未映射到 SQL Server 语义
CREATE INDEX SSMA 映射 CREATE INDEX 具有以下例外:

XML 索引
BUSINESS_TIME WITHOUT OVERLAPS 选择
PARTITIONED 子句
SPECIFICATION ONLY 选择
EXTEND USING 选择
MINPCTUSED 选择
PAGE SPLIT 选择
触发器 SSMA 映射以下触发器语义:

AFTER / FOR EACH ROW 触发器

AFTER / FOR EACH STATEMENT 触发器

BEFORE / FOR EACH ROWINSTEAD OF / FOR EACH ROW 触发器
序列 映射。
SELECT 语句 SSMA 映射 SELECT 具有以下例外:

data-change-table-reference 子句 - 部分映射,但 FINAL 不支持表

table-reference 子句 - 部分映射,但 only-table-reference、outer-table-reference、analyze-table-expression、collection-derived-table、xmltable-expression 不映射到 SQL Server 语义

period-specification 子句 - 未映射。

Continue-handler 子句 - 不映射。

Typed-correlation 子句 - 不映射。

Concurrent-access-resolution 子句 - 不映射。
VALUES 语句 映射。
INSERT 语句 映射。
UPDATE 语句 SSMA 映射 UPDATE 具有以下例外:

Table-reference 子句 - only-table-reference 未映射到 SQL Server 语义

Period 子句 - 未映射。
MERGE 语句 SSMA 映射 MERGE 具有以下例外:

Each 子句的单个与多个匹配项 - 映射到 SQL Server 语义,用于每个子句的有限出现次数

SIGNAL 子句 - 不映射到 SQL Server 语义

混合 UPDATEDELETE 子句 - 不映射到 SQL Server 语义

Period 子句 - 不会映射到 SQL Server 语义
DELETE 语句 SSMA 映射 DELETE 具有以下例外:

Table-reference 子句 - only-table-reference 未映射到 SQL Server 语义

Period 子句 - 不映射到 SQL Server 语义
隔离级别和锁类型 映射。
过程 (SQL) 映射。
过程(外部) 需要手动更新。
过程(来源) 不要映射到 SQL Server 语义。
赋值语句 映射。
CALL 过程语句 映射。
CASE 语句 映射。
FOR 语句 映射。
GOTO 语句 映射。
IF 语句 映射。
ITERATE 语句 映射。
LEAVE 语句 映射。
LOOP 语句 映射。
REPEAT 语句 映射。
RESIGNAL 语句 不支持条件。 消息可以是可选项。
RETURN 语句 映射。
SIGNAL 语句 不支持条件。 消息可以是可选项。
WHILE 语句 映射。
GET DIAGNOSTICS 语句 SSMA 映射 GET DIAGNOSTICS 具有以下例外:

ROW_COUNT -映射。

Db2_RETURN_STATUS -映射。

MESSAGE_TEXT -映射。

Db2_SQL_NESTING_LEVEL - 不映射到 SQL Server 语义

Db2_TOKEN_STRING - 不映射到 SQL Server 语义
游标 SSMA 映射游标,但有以下例外情况:

ALLOCATE CURSOR 语句 - 不映射到 SQL Server 语义

ASSOCIATE LOCATORS 语句 - 不映射到 SQL Server 语义

DECLARE CURSOR statement - Returnability 子句未映射到 SQL Server 语义

FETCH 语句 - 部分映射。 仅支持作为目标的变量。 SQLDA DESCRIPTOR 未映射到 SQL Server 语义
变量 映射。
异常、处理程序和条件 SSMA 将异常处理映射到以下异常:

EXIT handlers - Mapped。

UNDO handlers - Mapped。

CONTINUE handlers - 未映射。

条件 - 它不会映射到 SQL Server 语义。
动态 SQL 不映射。
别名 映射。
昵称 部分映射。 基础对象需要手动处理
同义词 映射。
Db2 中的标准函数 当 SQL Server 中提供等效函数时,SSMA 映射 Db2 标准函数:
授权 不映射。
谓词 映射。
SELECT INTO 语句 不映射。
VALUES INTO 语句 不映射。
事务控制 不映射。

转换 Db2 数据库对象

若要转换 Db2 数据库对象,请先选择要转换的对象,然后让 SSMA 执行转换。 若要在转换期间查看输出消息,请导航到“查看>输出”。

将 Db2 对象转换为 SQL Server 语法

  1. 在 Db2 元数据资源管理器中,展开 Db2 服务器,然后展开 架构

  2. 选择要转换的对象:

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

    • 要转换或忽略一个数据库,请选中架构名称旁边的复选框。

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

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

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

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

查看转换问题

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

查看摘要报告

  1. 在 Db2 元数据资源管理器中,选择“ 架构”。

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

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

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

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

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

查看单个转换问题

  1. 在 Db2 元数据资源管理器中,展开 架构

  2. 展开显示了一个红色错误图标的架构。

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

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

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

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

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

  7. 选择“下一个问题”按钮(带有向右箭头的红色错误图标)。

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

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

  • 可以在 SQL 选项卡上修改过程的源代码。

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

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