次の方法で共有


ITableDefinition でのデータ型のマッピング

SQL Server Native Client OLE DB プロバイダーのコンシューマーは、ITableDefinition::CreateTable 関数を使用してテーブルを作成するときに、渡される DBCOLUMNDESC 配列の pwszTypeName メンバーに SQL Server のデータ型を指定できます。 コンシューマーが列のデータ型を名前で指定する場合、DBCOLUMNDESC 構造体の wType メンバーで示される OLE DB データ型のマッピングは無視されます。

DBCOLUMNDESC 構造体の wType メンバーを使用して、列の新しいデータ型を OLE DB データ型で指定するときは、SQL Server Native Client OLE DB プロバイダーでは OLE DB データ型が次のようにマップされます。

OLE DB データ型

SQL Server

データ型

関連情報

DBTYPE_BOOL

bit

DBTYPE_BYTES

binaryvarbinaryimagevarbinary(max)

SQL Server Native Client OLE DB プロバイダーによって、DBCOLUMNDESC 構造体の ulColumnSize メンバーが調査されます。 調べた値、および SQL Server インスタンスのバージョンを基に、型が image にマップされます。

ulColumnSize の値が binary データ型の列の最大サイズよりも小さい場合、SQL Server Native Client OLE DB プロバイダーによって、DBCOLUMNDESC の rgPropertySets メンバーが調査されます。 DBPROP_COL_FIXEDLENGTH が VARIANT_TRUE の場合、型は binary にマップされます。 また、値が VARIANT_FALSE の場合、型は varbinary にマップされます。 いずれの場合も、DBCOLUMNDESC の ulColumnSize メンバーによって、作成される SQL Server の列の幅が決まります。

DBTYPE_CY

money

DBTYPE_DBTIMESTAMP

datetime

DBTYPE_GUID

uniqueidentifier

DBTYPE_I2

smallint

DBTYPE_I4

int

DBTYPE_NUMERIC

numeric

SQL Server Native Client OLE DB プロバイダーによって DBCOLUMDESC の bPrecision メンバーと bScale メンバーが調査され、numeric 型の列の有効桁数と小数点以下桁数が決定されます。

DBTYPE_R4

real

DBTYPE_R8

float

DBTYPE_STR

charvarchartextvarchar(max)

SQL Server Native Client OLE DB プロバイダーによって、DBCOLUMNDESC 構造体の ulColumnSize メンバーが調査されます。 調べた値、および SQL Server インスタンスのバージョンを基に、型が text にマップされます。

ulColumnSize の値がマルチバイト文字のデータ型の列の最大サイズよりも小さい場合、SQL Server Native Client OLE DB プロバイダーによって、DBCOLUMNDESC の rgPropertySets メンバーが調査されます。 DBPROP_COL_FIXEDLENGTH が VARIANT_TRUE の場合、型は char にマップされます。 また、値が VARIANT_FALSE の場合、型は varchar にマップされます。 いずれの場合も、DBCOLUMNDESC の ulColumnSize メンバーによって、作成される SQL Server の列の幅が決まります。

DBTYPE_UDT

UDT

UDT 列が必要な場合、ITableDefinition::CreateTable では、DBCOLUMNDESC 構造体の以下の情報が使用されます。

  • pwSzTypeName は無視されます。

  • rgPropertySets には、「ユーザー定義型の使用」の DBPROPSET_SQLSERVERCOLUMN のセクションで説明されているとおりに設定された DBPROPSET_SQLSERVERCOLUMN プロパティが含まれている必要があります。

DBTYPE_UI1

tinyint

DBTYPE_WSTR

ncharnvarcharntextnvarchar(max)

SQL Server Native Client OLE DB プロバイダーによって、DBCOLUMNDESC 構造体の ulColumnSize メンバーが調査されます。 調べた値を基に、型が ntext にマップされます。

ulColumnSize の値が Unicode 文字のデータ型の列の最大サイズよりも小さい場合、SQL Server Native Client OLE DB プロバイダーによって、DBCOLUMNDESC の rgPropertySets メンバーが調査されます。 DBPROP_COL_FIXEDLENGTH が VARIANT_TRUE の場合、型は nchar にマップされます。 また、値が VARIANT_FALSE の場合、型は nvarchar にマップされます。 いずれの場合も、DBCOLUMNDESC の ulColumnSize メンバーによって、作成される SQL Server の列の幅が決まります。

DBTYPE_XML

XML

注意

新しいテーブルの作成時には、SQL Server Native Client OLE DB プロバイダーによって上記の表に示した OLE DB データ型の列挙値のみがマップされます。 それ以外の OLE DB データ型の列が含まれたテーブルを作成すると、エラーが発生します。

関連項目

概念

データ型 (OLE DB)