从 SQL Server 迁移到 DM

原有的系统或开发习惯为 SQL Server 的用户,可以参考文档《DM DBA 手记之 SQLServer 移植到 DM》

数据迁移过程中,自增列已有的数据不变方法

  • 测试过程中,先将待迁移表 TABLE3 重命名成 TABLE2
ALTER TABLE TABLE_3 rename TO TABLE_2;
  • 导出建表语句,将创表 SQL 粘贴到新 SQL 编辑器后,将表名修改成重命名前的表名,将 id 列的类型修改成 int 或者 bigint 类型,再加上自增列的当前值和增长值
CREATE TABLE "SYSDBA"."TABLE_3"
(
"id" int NOT NULL IDENTITY(1, 1),
"name" VARCHAR2(50),
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
  • 执行以下 SQL,允许将显式值插入表的自增列中
SET IDENTITY_INSERT "SYSDBA"."TABLE_3"  ON;
  • 数据插入到新表中
insert into "SYSDBA"."TABLE_3"("id","name") select * from TABLE_2;
  • 关闭显示插入
SET IDENTITY_INSERT "SYSDBA"."TABLE_3"  OFF;

字段类型 varbinary(max) 迁移报错:数据大小已超过可支持范围

【问题解决】

按照提示修改字段类型 varbinary 为 blob,增大数据可支持大小,重新迁移即可。

使用 DTS 将表数据从 SQL Server 迁移到 DM 报错:无效的日期或时间类型

【问题解决】

DTS 迁移工具从 SQL Server 迁移数据时,对于表的定义,会将 DATETIME 时间类型的字段定义,转换成 TIMESTAMP 类型;但是对于表的数据,会将 DATETIME 类型的字段数据,转换成 TIMESTAMP WITH TIME ZONE,格式变成’2021-10-24 12:00:00.000 +08:00’。使得实际数据和字段定义不相匹配,导入失败报错。
这种情况下,可以将迁移的目标库迁移用户下的所有 TIMESTAMP 类型字段转换为 TIMESTAMP WITH TIME ZONE 类型,待表数据迁移完后再改回。

在 sqlserver 建外部链接的时候报错:指定驱动程序无法加载

【问题描述】

在 sqlserver 建外部链接的时候报错:通过访问接口"Microsoft OLE DB Provider for ODBC Drivers" 建立,sqlserver 报错 7303,无法初始化连接服务器 的 OLE DB 访问接口"MSDASQL"的数据源对象;由于系统错误 5:拒绝访问(DM8 ODBC DRIVER ,C:dmdbms\bin\dodbc.dll),指定驱动程序无法加载。

【问题解决】:

方法 1:检查系统变量,是否有达梦客户端的安装目录,没有的话,添加达梦的系统变量;
方法 2:把 bin 下面的文件拷贝到对应操作系统的系统变量目录(注意:windows 有 32、64 之分) ,拷贝的时候看下运行的 sqlserver 客户端是多少位的。
注: winserver 2012 要看下 bin 下面的权限是否正常,不能是只读,有些客户为了系统安全性设置的比较高。
配置完成后,重启客户端即可。

微信扫码
分享文档
扫一扫
联系客服