如何:針對 Oracle 發行者指定資料類型對應 (複寫 Transact-SQL 程式設計)
雖然有針對 Oracle 發行者提供一組預設的資料類型對應,但是可能需要針對給定的發行集指定不同的對應。您可以使用複寫預存程序以程式設計的方式指定自訂資料類型對應。您也可以設定在 Microsoft SQL Server 與非 SQL Server 資料庫管理系統 (DBMS) 之間對應資料類型時,所使用的預設對應。如需詳細資訊,請參閱<Oracle 發行者的資料類型對應>。
在建立屬於 Oracle 發行集的發行項時定義自訂資料類型對應
如果沒有 Oracle 發行集存在,請建立一個。如需詳細資訊,請參閱<如何:從 Oracle 資料庫建立發行集 (複寫 Transact-SQL 程式設計)>。
在散發者上執行 sp_addarticle。針對 @use_default_datatypes 指定 0 的值。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。
在散發者上,執行 sp_helparticlecolumns,以檢視已發行之發行項中資料行的現有對應。
在散發者上,執行 sp_changearticlecolumndatatype。針對 @publisher 指定 Oracle 發行者的名稱,並指定 @publication、@article 和 @column 來定義已發行的資料行。針對 @type 指定要對應的 SQL Server 資料類型名稱,並指定適用的 @length、@precision 和 @scale。
在散發者上執行 sp_articleview。這樣會建立用來從 Oracle 發行集產生快照集的檢視。
將對應指定為資料類型的預設對應
(選擇性) 在任何資料庫的散發者上,執行 sp_getdefaultdatatypemapping。指定 @source_dbms、@source_type、@destination_dbms、@destination_version 及識別來源 DBMS 所需的任何其他參數。目的地 DBMS 中有關目前對應之資料類型的資訊會使用輸出參數傳回。
(選擇性) 在任何資料庫的散發者上,執行 sp_helpdatatypemap。指定 @source_dbms 及篩選結果集所需的任何其他參數。請記下結果集中所需之對應的 mapping_id 值。
在任何資料庫的散發者上,執行 sp_setdefaultdatatypemapping。
如果您知道步驟 2 中取得之 mapping_id 的所要值,請針對 @mapping_id 來指定它。
如果您不知道 mapping_id,請指定 @source_dbms、@source_type、@destination_dbms、@destination_type 等參數,以及識別現有對應所需的任何其他參數。
在有效的資料類型中找出給定的 Oracle 資料類型
- 在任何資料庫的散發者上,執行 sp_helpdatatypemap。針對 @source_dbms 指定 ORACLE 的值,並指定篩選結果集所需的任何其他參數。
範例
這個範例會變更具有 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