共用方式為


資料類型與複寫

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 並不完全支援所有的 SQL Server 資料類型。做為 SQL Server 發行集的訂閱者,SQL Server Compact Edition 必須將不支援的型別轉譯到支援的型別。

支援的資料類型與資料類型對應

下表列出在 SQL Server 與 Microsoft SQL Server Compact Edition 之間複寫時所執行的資料類型對應。此表列出各個 SQL Server 資料類型的對應,並且敘述其限制或特殊行為。

SQL Server 資料類型 SQL Server Compact Edition 資料類型

bigint

bigint

binary(n)

binary(n)

bit

bit

character(n)(同義字:char(n))

national character(n) 或 ntext

如果資料的長度在 4000 個字元以下,SQL Server Compact Edition 複寫就會將 SQL Server character 資料對應到 SQL Server Compact Edition national character。否則,它會將字元資料對應到 SQL Server Compact Edition ntext。如果 ntext 資料的長度超過 character 資料行的長度,當資料從 SQL Server Compact Edition 傳送到 SQL Server 的時候,同步處理就會失敗。

character varying(n)(同義字:varchar(n))

national character varying 或 ntext

如果資料的長度在 4000 個字元以下,SQL Server Compact Edition 複寫就會將 SQL Server character varying 資料對應到 SQL Server Compact Edition national character varying;否則,它會將可變長度字元資料對應到 SQL Server Compact Edition ntext。如果 ntext 資料的長度超過 character varying 資料行的長度,當資料從 SQL Server Compact Edition 傳送到 SQL Server 的時候,同步處理就會失敗。

character varying(MAX)(同義字: varchar(MAX))

ntext

如果 character varying(MAX) 資料的長度超過 ntext 資料行的長度,當資料從 SQL Server 傳送到 SQL Server Compact Edition 的時候,同步處理就會失敗。

Computed Columns

不支援。

如果您使用「發行集精靈」並且指明將會使用 SQL Server Compact Edition 訂閱,就會將屬於 Computed Column 資料類型的任何資料行垂直分割到發行集之外。如果不使用精靈,就必須在發行集排除屬於此資料類型的資料行。

datetime

datetime

decimal

不支援。請使用 numeric。

double precision

double precision

float

float

image

image

integer(同義字:int)

integer

貨幣

money

national character(n)(同義字:nchar(n))

national character(n)

national character varying(n)(同義字:nvarchar(n))

national character varying(n)

national character varying(MAX)(同義字:nvarchar(MAX))

ntext

如果 national character varying(MAX) 資料的長度超過 ntext 資料行的長度,當資料從 SQL Server 傳送到 SQL Server Compact Edition 的時候,同步處理就會失敗。

ntext

ntext

numeric(同義字:decimal、dec)

numeric

real

real

smalldatetime

datetime

如果 datetime 資料的整數位數超過 smalldatetime 資料行的整數位數,當資料從 SQL Server Compact Edition 傳送到 SQL Server 的時候,同步處理就會失敗。

smallint (int 2)

smallint (int 2)

smallmoney

money

如果 money 資料的整數位數超過 smallmoney 資料行的整數位數,當資料從 SQL Server Compact Edition 傳送到 SQL Server 的時候,同步處理就會失敗。

sql_variant

ntext

如果 sql_variant 資料行有二進位資料存在,此二進位資料必須為偶數位元組,否則就會發生轉換錯誤。

text

ntext

如果 text 資料的長度超過 1,073,741,823 個字元,當資料從 SQL Server 傳送到 SQL Server Compact Edition 的時候,同步處理就會失敗。

timestamp

不支援。

如果您使用「發行集精靈」並且指明將會使用 SQL Server Compact Edition 訂閱,就會將屬於 timestamp 資料類型的任何資料行垂直分割到發行集之外。如果不使用精靈,就必須在發行集排除屬於此資料類型的資料行。

tinyint

tinyint

uniqueidentifier

uniqueidentifier

varbinary(n)

varbinary(n)

varbinary(MAX)

image

如果 varbinary(MAX) 資料的長度超過 image 資料行的長度,當資料從 SQL Server 傳送到 SQL Server Compact Edition 的時候,同步處理就會失敗。

varchar

請參閱可變長度字元

XML

ntext

請盡可能選擇 SQL Server 與 SQL Server Compact Edition 都支援的資料類型,如此就不必讓複寫執行資料對應。如果無法做到這一點,您的應用程式應該驗證儲存在 SQL Server Compact Edition 資料庫裡的值,確認複寫可以對應 SQL Server 與 SQL Server Compact Edition 之間的這些值。

如需 SQL Server 資料類型的詳細資訊,請參閱《SQL Server 線上叢書》的<資料類型>。

資料類型限制

下列限制適用於 SQL Server Compact Edition 訂閱者︰

  • 索引
    您無法發行對於 varchar (MAX)、nvarchar(MAX)、varbinary(MAX) 及 XML 資料行具有索引的資料表。建立 SQL Server Compact Edition 訂閱會失敗,因為這些資料行型別會對應到 ntext 或 image,而 ntext 或 image 資料行並不能建立主索引鍵。
  • 識別資料行
    SQL Server Compact Edition 識別資料行必須有屬於 integer (int 4) 或 bigint (int 8) 的資料類型。SQL Server Compact Edition 識別資料行不能有屬於 smallint、tinyint、decimal 或 numeric 的資料類型。如果您要訂閱的發行集具有除了 integer (int 4) 或 bigint (int 8) 以外的識別資料行,在 SQL Server Compact Edition 上建立該訂閱就會失敗。
    SQL Server Compact Edition 可讓您修改訂閱者端的種子與遞增值,只要使用 ALTER TABLE table_name ALTER COLUMN column_name IDENTITY (seed,increment) 陳述式即可。這可以讓您手動管理識別範圍。然而,如果您的發行集含有識別資料行,而其識別範圍由發行者管理,您就不應該在訂閱者端修改種子或遞增值。如果您指定的種子大於配置的範例識別,當您嘗試在資料表中插入新記錄的時候,SQL Server Compact Edition 就會傳回錯誤。下次同步處理的時候,發行者會為您的訂閱者指派一個新的識別範圍,因而修正這個問題。
  • 不支援的資料類型
    訂閱 SQL Server 2000 發行集的時候,不支援 computed column 與 timestamp 資料類型。訂閱 SQL Server 2005 發行集的時候,不支援 computed column、timestamp、date、time 和 utcdatetime 資料類型。
  • SQL Server 與 SQL Server Compact Edition 中的 CHAR 與 NTEXT 資料類型
    SQL Server 允許 CHAR 資料類型大於 SQL Server Compact Edition 的 CHAR 資料類型。若要複寫內容,大的 CHAR 資料類型會轉換到 SQL Server Compact Edition 上的 NTEXT 資料類型。雖然 SQL Server 和 SQL Server Compact Edition 允許變更 CHAR 資料行的資料類型,但兩者都不允許變更 NTEXT 資料行的資料類型。. 因此,雖然有可能在 SQL Server 端變更大的 CHAR 資料類型,但此變更在 SQL Server Compact Edition 端則會失敗,因為它已經不屬於 CHAR 資料類型。
  • NTEXT 或 IMAGE 資料類型
    如果某個資料行對應到 ntext,而 SQL Server 將同一個資料行的資料類型變更為 char、nchar 等,則 SQL Server Compact Edition 資料庫上的該資料行會維持 ntext,直到訂閱者重新初始化。

請參閱

概念

資料類型與 RDA

其他資源

資料類型對應 (SQL Server Compact Edition)

說明及資訊

取得 SQL Server Compact Edition 協助