Сопоставление типов данных для издателей Oracle
Типы данных Oracle и типы данных MicrosoftSQL Server не всегда полностью совпадают. Там, где это возможно, выбор подходящего типа данных при публикации таблицы Oracle осуществляется автоматически. В случаях, когда выбор однозначного соответствия типов данных не очевиден, предлагаются альтернативные сопоставления типов данных. Сведения о выборе альтернативных соответствий типов данных см. ниже в разделе «Указание альтернативных сопоставлений типов данных».
Следующая таблица показывает, как по умолчанию осуществляется преобразование типов данных между Oracle и SQL Server, когда данные передаются издателем Oracle распространителю SQL Server. В столбце «Альтернатива» показано, допустимы ли альтернативные соответствия.
Тип данных Oracle |
Тип данных SQL Server |
Альтернатива |
---|---|---|
BFILE |
VARBINARY(MAX) |
Да |
BLOB |
VARBINARY(MAX) |
Да |
CHAR([1-2000]) |
CHAR([1-2000]) |
Да |
CLOB |
VARCHAR(MAX) |
Да |
DATE |
DATETIME |
Да |
FLOAT |
FLOAT |
Нет |
FLOAT([1-53]) |
FLOAT([1-53]) |
Нет |
FLOAT([54-126]) |
FLOAT |
Нет |
INT |
NUMERIC(38) |
Да |
INTERVAL |
DATETIME |
Да |
LONG |
VARCHAR(MAX) |
Да |
LONG RAW |
IMAGE |
Да |
NCHAR([1-1000]) |
NCHAR([1-1000]) |
Нет |
NCLOB |
NVARCHAR(MAX) |
Да |
NUMBER |
FLOAT |
Да |
NUMBER([1-38]) |
NUMERIC([1-38]) |
Нет |
NUMBER([0-38],[1-38]) |
NUMERIC([0-38],[1-38]) |
Да |
NVARCHAR2([1-2000]) |
NVARCHAR([1-2000]) |
Нет |
RAW([1-2000]) |
VARBINARY([1-2000]) |
Нет |
REAL |
FLOAT |
Нет |
ROWID |
CHAR(18) |
Нет |
TIMESTAMP |
DATETIME |
Да |
TIMESTAMP(0-7) |
DATETIME |
Да |
TIMESTAMP(8-9) |
DATETIME |
Да |
TIMESTAMP(0-7) WITH TIME ZONE |
VARCHAR(37) |
Да |
TIMESTAMP(8-9) WITH TIME ZONE |
VARCHAR(37) |
Нет |
TIMESTAMP(0-7) WITH LOCAL TIME ZONE |
VARCHAR(37) |
Да |
TIMESTAMP(8-9) WITH LOCAL TIME ZONE |
VARCHAR(37) |
Нет |
UROWID |
CHAR(18) |
Нет |
VARCHAR2([1-4000]) |
VARCHAR([1-4000]) |
Да |
Вопросы сопоставления типов данных
При репликации данных из базы данных Oracle нужно помнить о следующих особенностях типов данных.
Неподдерживаемые типы данных
Следующие типы данных не поддерживаются; столбцы, имеющие эти типы, невозможно реплицировать.
Типы Object
Типы XML
Типы Varray
Вложенные таблицы
Столбцы, использующие REF
Тип данных DATE
Даты в SQL Server имеют диапазон от 1753 г. нашей эры до 9999 г. нашей эры, тогда как даты в Oracle распределяются в диапазоне от 4712 г. до нашей эры до 4712 г. нашей эры. Если столбец, имеющий тип DATE, содержит значения, выходящие за диапазон SQL Server, выберите для столбца альтернативный тип данных, которым является VARCHAR(19).
Типы FLOAT и NUMBER
Масштаб и точность, задаваемые при сопоставлении типов данных FLOAT и NUMBER, зависят от масштаба и точности, указанных для столбца, использующего этот тип данных в базе данных Oracle. Точность представляет собой количество цифр в числе. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Например, у числа 123,45 точность равна 5, а масштаб равен 2.
Oracle позволяет определять числа, имеющие масштаб больший, чем точность, например NUMBER(4,5), в то время как SQL Server требует, чтобы точность была не меньше масштаба. Чтобы исключить усечение данных, когда в данных издателя Oracle масштаб больше, чем точность, при преобразовании данных точность приравнивается к масштабу: тип данных NUMBER(4,5) был бы преобразован в NUMERIC(5,5).
Примечание |
---|
Если для типа NUMBER не указать масштаб и точность, SQL Server будет использовать по умолчанию максимальные масштаб (8) и точность (38). Для оптимизации хранения данных и производительности при репликации данных рекомендуется установить специальные значения масштаба и точности в Oracle. |
Типы больших объектов
Oracle поддерживает до 4 гигабайт (ГБ), в то время как SQL Server поддерживает до 2 ГБ. Реплицируемые данные свыше 2 ГБ усекаются.
Если таблица Oracle включает столбец типа BFILE, данные для этого столбца хранятся в файловой системе. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. При этом должно использоваться следующее синтаксическое выражение:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Дополнительные сведения о больших типах объектов см. в подразделе «Рассмотрение больших объектов» раздела Рассмотрение структуры и ограничений издателей Oracle.
Указание альтернативных сопоставлений типов данных
Обычно целесообразно использовать сопоставление типов данных по умолчанию, но для многих типов данных Oracle вместо сопоставления по умолчанию можно выбрать тип данных из набора альтернативных вариантов. Существует два способа указания альтернативных сопоставлений:
Переопределяйте значения по умолчанию для каждой статьи отдельно, используя хранимые процедуры или мастер создания публикаций.
Глобальная замена значений по умолчанию для всех последующих статей с помощью хранимых процедур (значения по умолчанию для существующих статей не изменяются).
Указание альтернативных сопоставлений типов данных
SQL Server Management Studio: Как указать сопоставления типов данных для издателя Oracle (среда SQL Server Management Studio)
Программирование репликации: Как указать сопоставления типов данных для издателя Oracle (программирование репликации на языке Transact-SQL)