データ型とレプリケーション

SQL Server Compact では、SQL Server のすべてのデータ型が完全にサポートされているわけではありません。SQL Server パブリケーションに対するサブスクライバとして、SQL Server Compact ではサポートされない型をサポートされる型に変換する必要があります。

サポートされるデータ型とデータ型マッピング

次の表に、SQL Server と MicrosoftSQL Server Compact 3.5 の間でレプリケーションを行う際に実行されるデータ型のマッピングを示します。この表では、SQL Server データ型ごとのマッピングを示し、制限事項または特殊な処理について説明します。

SQL Server のデータ型

SQL Server Compact のデータ型

bigint

Bigint

binary(n)

binary(n)

bit

Bit

character(n) (シノニム : char(n))

national character(n) またはntext

データの長さが 4,000 文字以下の場合、SQL Server Compact のレプリケーションにより、SQL Server の character データが SQL Server Compact の national character にマップされます。4,000 文字を超える場合、character データが SQL Server Compact の ntext にマップされます。ntext データの長さが character 列の長さを超える場合、データが SQL Server Compact から SQL Server に送信された時点で同期が失敗します。

character varying(n) (シノニム : varchar(n))

national character varying またはntext

データの長さが 4,000 文字以下の場合、SQL Server Compact のレプリケーションにより、SQL Server の character varying データが SQL Server Compact の national character varying にマップされます。4,000 文字を超える場合、character varying データが SQL Server Compact の ntext にマップされます。ntext データの長さが character varying 列の長さを超える場合、データが SQL Server Compact から SQL Server に送信された時点で同期が失敗します。

character varying(MAX) (シノニム : varchar(MAX))

ntext

character varying(MAX) データの長さが ntext 列の長さを超える場合、データが SQL Server から SQL Server Compact に送信された時点で同期が失敗します。

Computed Columns

サポートされていません。

パブリケーション ウィザードを使用して、SQL Server Compact サブスクリプションの使用を指定した場合、Computed Column データ型の列はパブリケーションから列方向に分割されます。ウィザードを使用しない場合、パブリケーション内でこのデータ型の列を除外する必要があります。

date

'YYYY-MM-DD' 形式の nchar(10) 値

注意

SQL Server Compact はワイド文字を格納します。この型の変換サポートは、SQL Server Compact 3.5 SP1 リリースによって提供されました。

datetime

Datetime

datetime2

'YYYY-MM-DD hh:mm:ss.nnnnnnn' 形式の nvarchar(27) 値

注意

SQL Server Compact はワイド文字を格納します。この型の変換サポートは、SQL Server Compact 3.5 SP1 リリースによって提供されました。

datetimeoffset

'YYYY-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm' 形式の nvarchar(34) 値

注意

SQL Server Compact はワイド文字を格納します。この型の変換サポートは、SQL Server Compact 3.5 SP1 リリースによって提供されました。

decimal

サポートされていません。numeric を使用します。

double precision

double precision

float

float

geography

image

注意

この型の変換サポートは、SQL Server Compact 3.5 SP1 リリースによって提供されました。

geometry

image

注意

この型の変換サポートは、SQL Server Compact 3.5 SP1 リリースによって提供されました。

image

image

integer (シノニム : int)

integer

money

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 に送信された時点で同期が失敗します。

ntext

ntext

numeric (シノニム : decimal, dec)

numeric

real

Real

smalldatetime

datetime

datetime データの有効桁数が smalldatetime 列の有効桁数を超える場合、データが SQL Server Compact から SQL Server に送信された時点で同期が失敗します。

smallint (int 2)

smallint (int 2)

smallmoney

money

money データの有効桁数が smallmoney 列の有効桁数を超える場合、データが SQL Server Compact から SQL Server に送信された時点で同期が失敗します。

sql_variant

ntext

sql_variant 列にバイナリ データが含まれている場合は、そのデータのバイト数が偶数である必要があります。偶数でない場合、変換エラーが発生します。

text

ntext

text データの長さが 1,073,741,823 文字を超える場合、データが SQL Server から SQL Server Compact に送信された時点で同期が失敗します。

time

'hh:mm:ss.nnnnnnn' 形式の nvarchar(16) 値

注意

SQL Server Compact はワイド文字を格納します。この型の変換サポートは、SQL Server Compact 3.5 SP1 リリースによって提供されました。

timestamp

サポートされていません。

パブリケーション ウィザードを使用して、SQL Server Compact サブスクリプションの使用を指定した場合、timestamp データ型の列はパブリケーションから列方向に分割されます。ウィザードを使用しない場合、パブリケーション内でこのデータ型の列を除外する必要があります。timestamp/rowversion 列が列方向に分割されていない場合、この列はレプリケートされません。

tinyint

tinyint

uniqueidentifier

uniqueidentifier

varbinary(n)

varbinary(n)

varbinary(MAX)

image

varbinary(MAX) データの長さが image 列の長さを超える場合、データが SQL Server から SQL Server Compact に送信された時点で同期が失敗します。

varchar

「character varying」を参照。

XML

ntext

レプリケーションでデータのマッピングを実行する必要がないように、可能な限り、SQL Server と SQL Server Compact の両方でサポートされるデータ型を選択してください。これができない場合は、SQL Server Compact データベースに格納された値をアプリケーションで検証し、レプリケーションによって SQL Server と SQL Server Compact の間でこれらの値をマップできることを確認する必要があります。

date、datetime2、datetimeoffset、および time をネイティブでサポートしていない既存のアプリケーションでは、nchar や nvarchar などの、互換性のあるデータ型にマップされたデータを処理する必要があります。SQL Server データ型の詳細については、SQL Server オンライン ブックの「データ型」を参照してください。

データ型の制限事項

SQL Server Compact サブスクライバには、次の制約が適用されます。

  • インデックス

    varchar (MAX) 列、nvarchar(MAX) 列、varbinary(MAX) 列、および XML 列のインデックスを持つテーブルはパブリッシュできません。これらの列の型は ntext または image にマップされますが、ntext 列または image 列には主キーを作成できないので、SQL Server Compact サブスクリプションの作成は失敗します。

  • ID 列

    SQL Server Compact ID 列には、integer (int 4) または bigint (int 8) データ型が指定されている必要があります。SQL Server Compact ID 列では、smallint、tinyint、decimal、または numeric データ型を保持できません。integer (int 4) または bigint(int8) 以外の ID 列を含むパブリケーションをサブスクライブする場合、そのサブスクリプションの作成は SQL Server Compact で失敗します。

    SQL Server Compact では、ALTER TABLEtable_nameALTER COLUMNcolumn_nameIDENTITY (seed,increment) ステートメントを使用して、サブスクライバ側でシード値または増分値を変更できます。これにより、ID 範囲を手動で管理できます。ただし、パブリケーションに ID 列が含まれ、ID 範囲がパブリッシャで管理されている場合は、サブスクライバでシード値または増分値を変更しないことをお勧めします。割り当てられた ID 範囲を超えるシードを指定した場合、テーブルに新しいレコードを挿入しようとすると、SQL Server Compact からエラーが返されます。この場合、次の同期でパブリッシャによってサブスクライバに新規の ID 範囲が割り当てられ、この問題が解決されます。

  • サポートされないデータ型

    SQL Server 2005 パブリケーションをサブスクライブする場合、computed column データ型、timestamp データ型、date データ型、time データ型、hierarchyid データ型、filestream データ型、utcdatetime データ型はサポートされません。

  • SQL Server および SQL Server Compact での CHAR データ型と NTEXT データ型

    SQL Server では、SQL Server Compact の CHAR データ型よりも大きな CHAR データ型が許容されています。SQL Server Compact では、内容をレプリケートする際、大きな CHAR データ型が NTEXT データ型に変換されます。SQL Server と SQL Server Compact では CHAR 列のデータ型の変更が許可されていますが、NTEXT 列のデータ型の変更はどちらにおいても許可されていません。したがって、SQL Server 側で大きな CHAR データ型を変更することはできますが、データ型が CHAR でなくなると SQL Server Compact 側では変更が失敗します。

  • NTEXT データ型または IMAGE データ型

    列が ntext にマップされ、SQL Server によって同じ列のデータ型が char や nchar などに変更される場合、サブスクライバが再初期化されるまで、SQL Server Compact データベースの列は ntext のままです。

関連項目

その他の技術情報

データ型と RDA

マネージ データ型マッピング (SQL Server Compact)