Oracle 發行者的資料類型對應

適用於:SQL Server

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)
日期 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
TIMESTAMP(0-7) DATETIME
TIMESTAMP(8-9) DATETIME
TIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37)
TIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37)
TIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37)
TIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37)
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 資料類型,您可以從一組替代對應中選取資料類型對應,而不使用預設對應。 可透過兩種方式指定替代對應:

  • 使用預存程序或「新增發行集精靈」覆寫各發行項的預設值。

  • 使用預存程序對所有未來發行項的預設值進行全域變更 (不變更現有發行項的預設值)。

若要指定替代資料類型對應,請參閱< 指定 Oracle 發行者的資料類型對應>。

另請參閱

設定 Oracle 發行者
Oracle 發行者的設計考量與限制
Oracle 發行概觀