Поделиться через


Как указать сопоставления типов данных для издателя Oracle (программирование репликации на языке Transact-SQL)

Хотя в списке для издателей Oracle имеется набор сопоставлений типов данных, для отдельных публикаций может потребоваться создание дополнительных сопоставлений. Пользовательские сопоставления типов данных могут быть заданы программно с помощью хранимых процедур репликации. Кроме того, можно задать сопоставления данных по умолчанию, которые будут использоваться при сопоставлении типов данных между базами данных MicrosoftSQL Server и базами данных других поставщиков. Дополнительные сведения см. в разделе Сопоставление типов данных для издателей Oracle.

Определение пользовательского сопоставления данных при создании статьи, принадлежащей публикации Oracle

  1. Если публикация Oracle не существует, ее необходимо создать. Дополнительные сведения см. в разделе Как создать публикацию из базы данных Oracle (программирование репликации на языке Transact-SQL).

  2. На распространителе выполните хранимую процедуру sp_addarticle. В параметре @use_default_datatypes укажите значение 0. Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).

  3. Чтобы просмотреть существующие сопоставления для столбца в опубликованной статье, выполните хранимую процедуру sp_helparticlecolumns.

  4. На распространителе выполните хранимую процедуру sp_changearticlecolumndatatype. Чтобы определить опубликованный столбец, укажите имя издателя Oracle в параметре @publisher и задайте значения параметров @publication, @article и @column. Укажите имя типа данных SQL Server, сопоставляемого с типом @type, и при необходимости задайте значения параметров @length, @precision и @scale.

  5. На распространителе выполните хранимую процедуру sp_articleview. Она создаст представление, используемое для создания моментального снимка из публикации Oracle.

Назначение для типа данных сопоставления по умолчанию

  1. (Необязательно) На распространителе в любой базе данных выполните хранимую процедуру sp_getdefaultdatatypemapping. Укажите значения параметров @source_dbms, @source_type, @destination_dbms, @destination_version и других параметров, необходимых для идентификации базы данных-источника. Сведения о текущем сопоставлении типа данных в целевой базе данных возвращаются в выходных параметрах.

  2. На распространителе в любой базе данных выполните хранимую процедуру sp_helpdatatypemap (необязательно). Укажите значение параметра @source_dbms и других параметров, необходимых для фильтрации результирующего набора. В результирующем наборе просмотрите значение параметра mapping_id для текущего сопоставления.

  3. На распространителе в любой базе данных выполните хранимую процедуру sp_setdefaultdatatypemapping (необязательно).

    • Если известно необходимое значение параметра mapping_id, полученное на шаге 2, укажите его в параметре @mapping_id.

    • Если значение mapping_id неизвестно, то необходимо указать значения параметров @source_dbms, @source_type, @destination_dbms, @destination_type и других параметров, необходимых для идентификации существующего сопоставления.

Определение допустимых типов данных, соответствующих типу данных Oracle

  • На распространителе в любой базе данных выполните хранимую процедуру sp_helpdatatypemap. Укажите значение ORACLE в параметре @source_dbms и задайте значения других параметров, необходимых для фильтрации результирующего набора.

Пример

Следующий пример производит сопоставление столбца данных Oracle типа NUMBER с типом данных SQL Server numeric(38,38) вместо типа данных float, используемого по умолчанию.

EXEC sp_changearticlecolumndatatype 
    @publication = 'OraPublication', 
    @publisher = 'OraPublisher', 
    @article = 'OraArticle', 
    @column = 'OraArticleCol', 
    @type = 'numeric', 
    @scale = 38, 
    @precision = 38;
GO

Следующий пример запроса возвращает два сопоставления для типа данных Oracle 9 CHAR: определенное по умолчанию и альтернативное.

EXEC sp_helpdatatypemap 
    @source_dbms = N'ORACLE', 
    @source_version = 9,
    @source_type = N'CHAR';
GO

Следующий пример запроса возвращает сопоставления по умолчанию для типа данных Oracle 9 NUMBER, когда он указан без масштаба и точности.

EXEC sp_helpdatatypemap 
    @source_dbms = N'ORACLE', 
    @source_version = 9,
    @source_type = N'NUMBER',
    @defaults_only = 1;
GO