共用方式為


指定 Oracle 發行者的資料類型對應

本主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 2012 中指定 Oracle 發行者的資料類型對應。 雖然有針對 Oracle 發行者提供一組預設的資料類型對應,但是可能需要針對給定的發行集指定不同的對應。

本主題內容

  • 若要指定 Oracle 發行者的資料類型對應,請使用:

    SQL Server Management Studio

    Transact-SQL

使用 SQL Server Management Studio

[發行項屬性 - <Article>] 對話方塊的 [資料對應] 索引標籤中指定資料類型對應。 可在「新增發行集精靈」的 [發行項] 頁面與 [發行集屬性 - <Publication>] 對話方塊中進行。 如需有關使用此精靈及存取此對話方塊的詳細資訊,請參閱<從 Oracle 資料庫建立發行集>和<檢視及修改發行集屬性>。

若要指定資料類型對應

  1. 在新增發行集精靈的 [發行項] 頁面上或 [發行集屬性 - <Publication>] 對話方塊中,選取一個資料表,然後按一下 [發行項屬性]

  2. 按一下 [設定反白顯示資料表發行項的屬性]

  3. [發行項屬性 - <Article>] 對話方塊之 [資料對應] 索引標籤的 [訂閱者資料類型] 資料行中選取對應:

    • 對於某些資料類型,只有一個可能的對應,在這種情況下,屬性方格中的資料行為唯讀。

    • 對於某些資料類型,有多種類型可供您選擇。 除非您的應用程式需要不同的對應,否則 Microsoft 建議您使用預設對應。 如需詳細資訊,請參閱<Oracle 發行者的資料類型對應>。

  4. 按一下 [確定]。  

搭配回到頁首連結使用的箭頭圖示[Top]

使用 Transact-SQL

您可以使用複寫預存程序以程式設計的方式指定自訂資料類型對應。 您也可以設定在 Microsoft SQL Server 與非 SQL Server 資料庫管理系統 (DBMS) 之間對應資料類型時,所使用的預設對應。 如需詳細資訊,請參閱<Oracle 發行者的資料類型對應>。

在建立屬於 Oracle 發行集的發行項時定義自訂資料類型對應

  1. 如果沒有 Oracle 發行集存在,請建立一個。

  2. 在散發者上執行 sp_addarticle。 針對 @use_default_datatypes 指定 0 的值。 如需詳細資訊,請參閱<定義發行項>。

  3. 在散發者上,執行 sp_helparticlecolumns,以檢視已發行之發行項中資料行的現有對應。

  4. 在散發者上,執行 sp_changearticlecolumndatatype。 針對 @publisher 指定 Oracle 發行者的名稱,並指定 @publication@article@column 來定義已發行的資料行。 針對 @type 指定要對應的 SQL Server 資料類型名稱,並指定適用的 @length@precision@scale

  5. 在散發者上執行 sp_articleview。 這樣會建立用來從 Oracle 發行集產生快照集的檢視。

將對應指定為資料類型的預設對應

  1. (選擇性) 在任何資料庫的散發者上,執行 sp_getdefaultdatatypemapping。 指定 @source_dbms@source_type@destination_dbms@destination_version 及識別來源 DBMS 所需的任何其他參數。 目的地 DBMS 中有關目前對應之資料類型的資訊會使用輸出參數傳回。

  2. (選擇性) 在任何資料庫的散發者上,執行 sp_helpdatatypemap。 指定 @source_dbms 及篩選結果集所需的任何其他參數。 請記下結果集中所需之對應的 mapping_id 值。

  3. 在任何資料庫的散發者上,執行 sp_setdefaultdatatypemapping

    • 如果您知道步驟 2 中取得之 mapping_id 的所要值,請針對 @mapping_id 來指定它。

    • 如果您不知道 mapping_id,請指定 @source_dbms@source_type@destination_dbms@destination_type 等參數,以及識別現有對應所需的任何其他參數。

在有效的資料類型中找出給定的 Oracle 資料類型

  • 在任何資料庫的散發者上,執行 sp_helpdatatypemap。 針對 @source_dbms 指定 ORACLE 的值,並指定篩選結果集所需的任何其他參數。

範例 (Transact-SQL)

這個範例會變更具有 NUMBER 之 Oracle 資料類型的資料行,好讓它對應到 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

搭配回到頁首連結使用的箭頭圖示[Top]

請參閱

概念

Oracle 發行者的資料類型對應

異質資料庫複寫

複寫系統預存程序概念

設定 Oracle 發行者