指定 Oracle 发布服务器的数据类型映射Specify Data Type Mappings for an Oracle Publisher

适用于:Applies to: 是SQL ServerSQL Server(所有支持的版本)yesSQL ServerSQL Server (all supported versions) 适用于:Applies to: 是SQL ServerSQL Server(所有支持的版本)yesSQL ServerSQL Server (all supported versions)

本主题说明如何使用 SQL ServerSQL ServerSQL Server Management StudioSQL Server Management StudioTransact-SQLTransact-SQL中指定 Oracle 发布服务器的数据类型映射。This topic describes how to specify data type mappings for an Oracle Publisher in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 虽然已经为 Oracle 发布服务器提供了一组默认数据类型映射,但可能仍有必要为给定发布指定不同的映射。Although a set of default data type mappings are provided for Oracle Publishers, it might be necessary to specify different mappings for a given publication.

本主题内容In This Topic

使用 SQL Server Management StudioUsing SQL Server Management Studio

在“项目属性 - <Article>”对话框的“数据映射”选项卡上指定数据类型映射 。Specify data type mappings on the Data Mapping tab of the Article Properties - <Article> dialog box. 可以从新建发布向导和“发布属性 - <Publication>”对话框的“项目”页中访问该对话框 。This is available from the Articles page of the New Publication Wizard and the Publication Properties - <Publication> dialog box. 有关使用该向导和访问该对话框的详细信息,请参阅从 Oracle 数据库创建发布以及查看和修改发布属性For more information about using the wizard and accessing the dialog box, see Create a Publication from an Oracle Database and View and Modify Publication Properties.

指定数据类型映射To specify a data type mapping

  1. 在新建发布向导或“发布属性 - <Publication>”对话框的“项目”页上,选择一个表,然后单击“项目属性” 。On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table, and then click Article Properties.

  2. 单击 “设置突出显示的表项目的属性”Click Set Properties of Highlighted Table Article.

  3. 在“项目属性 - <Article>”对话框的“数据映射”选项卡上,从“订阅服务器数据类型”列中选择映射 :On the Data Mapping tab of the Article Properties - <Article> dialog box, select mappings from the Subscriber Data Type column:

    • 对于某些数据类型,只能有一种可能的映射,在这种情况下,属性网格中的相应列是只读的。For some data types there is only one possible mapping, in which case the column in the property grid is read-only.

    • 对于某些数据类型,有多种可供选择的映射类型。For some types, there is more than one type that you can select. 除非您的应用程序需要使用其他映射,否则MicrosoftMicrosoft 建议使用默认映射。MicrosoftMicrosoft recommends that you use the default mapping unless your application requires a different mapping. 有关详细信息,请参阅 Data Type Mapping for Oracle PublishersFor more information, see Data Type Mapping for Oracle Publishers.

  4. 单击“确定”。 Click OK.

使用 Transact-SQLUsing Transact-SQL

可以使用复制存储过程,以编程方式指定自定义数据类型映射。You can specify custom data type mappings programmatically using replication stored procedures. 还可以设置在 MicrosoftMicrosoft SQL ServerSQL Server 与非 SQL ServerSQL Server 数据库管理系统 (DBMS) 间映射数据类型时使用的默认映射。You can also set the default mappings that are used when mapping data types between MicrosoftMicrosoft SQL ServerSQL Server and a non- SQL ServerSQL Server database management system (DBMS). 有关详细信息,请参阅 Data Type Mapping for Oracle PublishersFor more information, see Data Type Mapping for Oracle Publishers.

在创建属于 Oracle 发布的项目时定义自定义数据类型映射To define custom data type mappings when creating an article belonging to an Oracle publication

  1. 如果尚不存在 Oracle 发布,请创建一个。If one does not already exist, create an Oracle publication.

  2. 在分发服务器上,执行 sp_addarticleAt the Distributor, execute sp_addarticle. 将 @use_default_datatypes 的值指定为 0。Specify a value of 0 for @use_default_datatypes. 有关详细信息,请参阅 定义项目For more information, see Define an Article.

  3. 在分发服务器上,执行 sp_helparticlecolumns 以查看已发布项目中某列的现有映射。At the Distributor, execute sp_helparticlecolumns to view the existing mapping for a column in a published article.

  4. 在分发服务器上,执行 sp_changearticlecolumndatatypeAt the Distributor, execute sp_changearticlecolumndatatype. 为 @publisher 指定 Oracle 发布服务器的名称,并指定 @publication、@article 和 @column 以定义已发布的列。Specify the name of the Oracle Publisher for @publisher, as well as @publication, @article, and @column to define the published column. 为 @type 指定要映射到的 SQL ServerSQL Server 数据类型的名称,并在必要时指定 @length、@precision 和 @scale。Specify the name of the SQL ServerSQL Server data type to map to for @type, as well as @length, @precision, and @scale, where applicable.

  5. 在分发服务器上,执行 sp_articleviewAt the Distributor, execute sp_articleview. 这将创建用于从 Oracle 发布生成快照的视图。This creates the view used to generate the snapshot from the Oracle publication.

将映射指定为数据类型的默认映射To specify a mapping as the default mapping for a data type

  1. (可选)在分发服务器上,对任意一个数据库执行 sp_getdefaultdatatypemapping(Optional) At the Distributor on any database, execute sp_getdefaultdatatypemapping. 指定 @source_dbms、@source_type、@destination_dbms、@destination_version 以及标识源 DBMS 所需的其他任何参数。Specify @source_dbms, @source_type, @destination_dbms, @destination_version, and any other parameters needed to identify the source DBMS. 将使用输出参数返回有关目标 DBMS 中当前映射的数据类型的信息。Information on the currently mapped data type in the destination DBMS is returned using the output parameters.

  2. (可选)在分发服务器上,对任意一个数据库执行 sp_helpdatatypemap(Optional) At the Distributor on any database, execute sp_helpdatatypemap. 指定 @source_dbms 以及筛选结果集所需的其他任何参数。Specify @source_dbms and any other parameters needed to filter the result set. 记下结果集中所需映射的 mapping_id 的值。Note the value of mapping_id for the desired mapping in the result set.

  3. 在分发服务器上,对任意一个数据库执行 sp_setdefaultdatatypemappingAt the Distributor on any database, execute sp_setdefaultdatatypemapping.

    • 如果知道在步骤 2 中获取的 mapping_id 的所需值,请为 @mapping_id 指定该值。If you know the desired value of mapping_id obtained in step 2, specify it for @mapping_id.

    • 如果不知道 mapping_id,请指定 @source_dbms、@source_type、@destination_dbms、@destination_type 参数以及标识现有映射所需的其他任何参数。If you do not know the mapping_id, specify the parameters @source_dbms, @source_type, @destination_dbms, @destination_type, and any other parameters required to identify an existing mapping.

查找针对给定的 Oracle 数据类型的有效数据类型To find valid data types for a given Oracle data type

  1. 在分发服务器上,对任何一个数据库执行 sp_helpdatatypemapAt the Distributor on any database, execute sp_helpdatatypemap. 将 @source_dbms 的值指定为 ORACLE ,并指定筛选结果集所需的其他任何参数。Specify a value of ORACLE for @source_dbms and any other parameters needed to filter the result set.

示例 (Transact-SQL)Examples (Transact-SQL)

此示例将对其类型为 Oracle 数据类型 NUMBER 的列进行更改,以将该列映射到 SQL ServerSQL Server 数据类型 numeric(38,38) 而非默认数据类型 float 中指定 Oracle 发布服务器的数据类型映射。This example changes a column with an Oracle data type of NUMBER so it is mapped to SQL ServerSQL Server data type numeric(38,38), instead of the default data type float.

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

此示例查询将返回 Oracle 9 数据类型 CHAR 的默认映射及替代映射。This example query returns the default and alternative mappings for the Oracle 9 data type CHAR.

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

此示例查询在未对 Oracle 9 数据类型 NUMBER 指定小数位数或精度时,返回该数据类型的默认映射。This example query returns the default mappings for the Oracle 9 data type NUMBER when it is specified without a scale or precision.

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

另请参阅See Also

Data Type Mapping for Oracle Publishers Data Type Mapping for Oracle Publishers
异类数据库复制 Heterogeneous Database Replication
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
配置 Oracle 发布服务器Configure an Oracle Publisher