Конвертировать Raw [16] (Guid) в Oracle в уникальный идентификатор в SQL Server по SSMA - PullRequest
0 голосов
/ 20 апреля 2019

Я столкнулся с проблемой, что мне нужно преобразовать данные из базы данных Oracle в базу данных SQL Server, и нет другого выхода, кроме помощника по миграции SQL Server.

В SSMA естьTypeMapping, который позволяет вам определять типы, которые вы хотите разыграть.Я добавил Raw [16] (Guid в Oracle) в UniqueIdentifier (Guid in oracle) как TypeMapping.

Но когда SSMA начал преобразовывать данные, он возвращает это исключение:

Заданное значение типа Byte [] из источника данных не может быть преобразовано в тип uniqueidentifier указанного целевого столбца.

1 Ответ

0 голосов
/ 24 апреля 2019

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 - допустимое значение уникального идентификатора

Вы можете подумать о следующих опциях:

  • Я бы предложил вам использовать VARCHAR (32) для представления соответствующего GUID ORACLE в SQLServer в отображении типов.

  • вы можете иметь значение по умолчанию для NEWID () для целевого столбца, значения будут назначаться при загрузке данных

  • Имейте целевой тип данных как VARCHAR(36), и как только вы закончите с миграцией, вы можете начать использовать NEWID () для будущих значений. Поскольку GUID будут уникальными, у вас не возникнет проблем.
...