Oracle 發行者的資料類型對應
Oracle 資料類型與 Microsoft SQL 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 |
是 |
UROWID |
CHAR(18) |
否 |
VARCHAR2([1-4000]) |
VARCHAR([1-4000]) |
是 |
資料類型對應的考量
從 Oracle 資料庫複寫資料時,注意下列資料類型問題。
不支援的資料類型
下列資料類型不受支援;無法複寫具有這些類型的資料行:
- 物件類型
- XML 類型
- Varrays
- 巢狀資料表
- 使用 REF 的資料行
DATE 資料類型
SQL Server 中的 日期範圍是 1753 A.D. 到 9999 A.D.,而 Oracle 中的日期範圍是 4712 B.C. 到 4712 A.D。如果 DATE 類型的資料行包含超出 SQL Server 範圍的值,請為該資料行選取替代資料類型,即 VARCHAR(19)。
FLOAT 和 NUMBER 類型
在對應 FLOAT 和 NUMBER 資料類型期間指定的小數位數與有效位數,取決於為使用 Oracle 資料庫中資料類型的資料行指定的小數位數與有效位數。位數 (Precision) 是指數字中總共的位數。小數位數 (Scale) 則是指數字中小數點右方的位數。例如 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 GB,而 SQL Server 最多支援 2 GB。超過 2 GB 的複寫資料將被截斷。
如果 Oracle 資料表包含 BFILE 資料行,該資料行的資料將儲存在檔案系統中。複寫管理使用者帳戶必須被授與目錄存取權限。在該目錄中,資料使用下列語法儲存:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
如需大型物件類型的詳細資訊,請參閱<Oracle 發行者的設計考量與限制>中的「大型物件的考量」一節。
指定替代資料類型對應
通常適合使用預設的資料類型對應,但對於許多 Oracle 資料類型,您可以從一組替代對應中選取資料類型對應,而不使用預設對應。可透過兩種方式指定替代對應:
- 使用預存程序或「新增發行集精靈」覆寫各發行項的預設值。
- 使用預存程序對所有未來發行項的預設值進行全域變更 (不變更現有發行項的預設值)。
若要指定替代資料類型對應
- SQL Server Management Studio: 如何:指定 Oracle 發行者的資料類型對應 (SQL Server Management Studio)
- 複寫程式設計:<How to: Specify Data Type Mappings for an Oracle Publisher (Replication Transact-SQL Programming)>
請參閱
概念
設定 Oracle 發行者
Oracle 發行者的設計考量與限制
Oracle 發行概觀