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

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

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

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

national character varying または ntext

データの長さが 4,000 文字以下の場合、SQL Server Compact Edition のレプリケーションにより、SQL Server の character varying データが SQL Server Compact Edition の national character varying にマップされます。4,000 文字を超える場合、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

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

「character varying」を参照。

XML

ntext

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

SQL Server データ型の詳細については、SQL Server Books Online の「データ型」を参照してください。

データ型の制限事項

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

  • インデックス
    varchar (MAX) 列、nvarchar(MAX) 列、varbinary(MAX) 列、および XML 列のインデックスを持つテーブルはパブリッシュできません。これらの列の型は ntext または image にマップされますが、ntext 列または image 列には主キーを作成できないので、SQL Server Compact Edition サブスクリプションの作成は失敗します。
  • ID 列
    SQL Server Compact Edition ID 列には、integer (int 4) または bigint (int 8) データ型が指定されている必要があります。SQL Server Compact Edition ID 列では、smallint、tinyint、decimal、または numeric データ型を保持できません。integer (int 4) または bigint (int 8) 以外の ID 列を含むパブリケーションをサブスクライブする場合、そのサブスクリプションの作成は SQL Server Compact Edition で失敗します。
    SQL Server Compact Edition では、ALTER TABLE table_name ALTER COLUMN column_name IDENTITY (seed,increment) ステートメントを使用して、サブスクライバ側でシード値または増分値を変更できます。これにより、ID 範囲を手動で管理できます。ただし、パブリケーションに ID 列が含まれ、ID 範囲がパブリッシャで管理されている場合は、サブスクライバでシード値または増分値を変更しないことをお勧めします。割り当てられた ID 範囲を超えるシードを指定した場合、テーブルに新しいレコードを挿入しようとすると、SQL Server Compact Edition からエラーが返されます。この場合、次の同期でパブリッシャによってサブスクライバに新規の ID 範囲が割り当てられ、この問題が解決されます。
  • サポートされないデータ型
    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 では、SQL Server Compact Edition の CHAR データ型よりも大きな CHAR データ型が許容されています。SQL Server Compact Edition では、内容をレプリケートする際、大きな CHAR データ型が NTEXT データ型に変換されます。SQL Server と SQL Server Compact Edition では CHAR 列のデータ型の変更が許可されていますが、NTEXT 列のデータ型の変更はどちらにおいても許可されていません。したがって、SQL Server 側で大きな CHAR データ型を変更することはできますが、データ型が CHAR でなくなると SQL Server Compact Edition 側では変更が失敗します。
  • NTEXT データ型または IMAGE データ型
    列が ntext にマップされ、SQL Server によって同じ列のデータ型が char や nchar などに変更される場合、サブスクライバが再初期化されるまで、SQL Server Compact Edition データベースの列は ntext のままです。

参照

概念

データ型と RDA

その他の技術情報

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

ヘルプおよび情報

SQL Server Compact Edition のサポートについて