我已经处理了将数据从Oracle
数据库转换为SQL Server
数据库所需的问题,除了SQL Server迁移助手之外没有办法。
在SSMA
中有一个TypeMapping
,它允许您定义要投射的类型。我将Raw [16](Oracle中的Guid)添加到了UniqueIdentifier(oracle中的Guid)作为TypeMapping
。
但是当SSMA开始转换数据时,它会返回以下异常:
来自数据源的类型Byte []的给定值无法转换为指定目标列的类型uniqueidentifier。
ORACLE SYS_GUID是RAW(16),它是32个字符的十六进制表示。
等效的SQL Server数据类型Uniqueidentifier是16字节的二进制值,它是36个字符的表示形式。 SQL Server UniqueIdentifier
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个x是0-9或a-f范围内的十六进制数字。例如,6F9619FF-8B86-D011-B42D-00C04FC964FF是有效的uniqueidentifier值
您可以考虑以下选项:
VARCHAR(36)
,完成迁移后,可以开始使用NEWID()来获取未来的值。由于GUID将是独一无二的,因此您不会遇到问题。