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 |
binary、varbinary、image、varbinary(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 |
char、varchar、text、varchar(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 構造体の以下の情報が使用されます。
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_WSTR |
nchar、nvarchar、ntext、nvarchar(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 データ型の列が含まれたテーブルを作成すると、エラーが発生します。 |