数据库和应用迁移 UGO-Microsoft SQL Server To GaussDB配置项使用说明

时间:2024-04-17 18:15:41

Microsoft SQL Server To GaussDB 配置项使用说明

问题描述

配置建议

建议值

SQLServer 表字段支持IDENTITY属性,但GaussDB不支持该属性,默认无法迁移。

建议配置”IDENTITY列“解决该类问题。

将IDENTITY属性列转换为SERIAL类型。

影响:序列号数据类型是四个字节的自增整数。取值范围为1至2147483647。超过这个上限,GaussDB将报错,DML语句执行失败。

SQLServer 表字段支持bit类型,但是GaussDB,不支持该属性,默认无法迁移。

建议配置“bit类型”解决该类问题。

将bit类型转化为boolean类型。

影响:boolean类型的取值相比bit类型多了一个“null”

SQLServer支持datetimeoffset数据类型,但是GaussDB不支持,

默认转成timestamptz(二者最大秒数精度存在差异),时间函数year等转换方案处理结果在特殊情况下存在差异。

建议配置"datetimeoffset类型转换"解决该类问题

将datetimeoffset类型转换为varchar2类型。

影响:datetimeoffset类型转换为varchar2类型。

高斯O模式空字符串''等同于null,ISNULL等函数转换方案存在语义问题。

建议配置"忽略空字符串''为null的风险"解决该类问题。

不忽略空字符串''为null的风险。

影响:存在空字符串''风险的函数不进行转换。

GaussDB 分布式不支持外键约束,相关CREATE TABLE以及ALTER TABLE语句涉及外键约束会导致执行异常,需要根据实际业务情况选择是否需要外键特性。

建议配置"FOREIGN KEY约束"解决该类问题。

影响:注释FOREIGN KEY约束,注释后,原表的外键约束失效,不能确保数据保持一致,有可能创建不一致的数据。

GaussDB 数据库不支持SQL Server表变量(包括多语句表值函数返回表定义),目前GaussDB 较为接近的转换方案为临时表,二者在部分使用场景下有区别,用户根据需要选择是否开启对表变量类型的转换。

建议配置"是否转换表变量(包括多语句表值函数返回表定义)"解决该类问题。

将表变量转换临时表。

影响:SQL Server中显式表变量不遵循事务的回滚语义,GaussDB中临时表遵循事务回滚语义,需要关注业务语义是否发生变化。

GaussDB 数据库不支持存储过程内的SELECT语句,目前GaussDB 较为接近的转换方案为使用动态游标将结果从存储过程内传递出来。

建议配置"是否将存储过程中的SELECT语句利用游标处理"解决该类问题。

利用游标处理存储过程中的SELECT语句。

影响:如果需要获取存储过程中的结果集,则需要对相关调用形式进行修改。

创建索引过程不阻塞DML操作

建议配置:“CREATE INDEX的CONCURRENTLY子句”解决该类问题

建议值:如果业务非常需要这个功能,建议选择添加CONCURRENTLY关键字选项。

影响:创建这类索引时候,容易造成死锁,同时对Astore的表索引的创建比正常更长。

GaussDB 保留对象名称大小写需要使用双引号引用对象名称。

建议配置 “对象名称大小写转换” 解决该类问题。

建议值:对象名称全部转换为小写。

support.huaweicloud.com/usermanual-ugo/zh-cn_topic_0000001825066390.html