SQL Server Native ClientITableDefinition でのデータ型のマッピング

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

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

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

OLE DB データ型 SQL Server

データ型 (data type)
関連情報
DBTYPE_BOOL bit
DBTYPE_BYTES binaryvarbinaryimagevarbinary(max) SQL ServerNative Client OLE DB プロバイダーは、DBCOLUMNDESC 構造体の Ulcolumnsize メンバーを検査します。 Native Client OLE DB プロバイダーは、値とインスタンスのバージョンに基づいて、 SQL Server SQL Server 型を image にマップします。

Ulcolumnsize の値が binary データ型の列の最大長よりも小さい場合、 SQL Server NATIVE CLIENT OLE DB プロバイダーは dbcolumndesc rgPropertySets メンバーを検査します。 DBPROP_COL_FIXEDLENGTH が VARIANT_TRUE 場合は、 SQL Server Native Client OLE DB プロバイダーによって型が バイナリ にマップされます。 プロパティの値が VARIANT_FALSE 場合、 SQL Server Native Client OLE DB プロバイダーはその型を varbinary にマップします。 いずれの場合も、DBCOLUMNDESC の ulColumnSize メンバーによって、作成される SQL Server の列の幅が決まります。
DBTYPE_CY money
DBTYPE_DBTIMESTAMP datetime
DBTYPE_GUID uniqueidentifier
DBTYPE_I2 smallint
DBTYPE_I4 int
DBTYPE_NUMERIC numeric SQL ServerNative Client OLE DB プロバイダーは、数値 列の有効桁数と小数点以下桁数を決定するために、Dbcolumn desc Bprecision メンバーと bprecision メンバーを検査します。
DBTYPE_R4 real
DBTYPE_R8 float
DBTYPE_STR charvarchartextvarchar(max) SQL ServerNative Client OLE DB プロバイダーは、DBCOLUMNDESC 構造体の Ulcolumnsize メンバーを検査します。 Native Client OLE DB プロバイダーは、インスタンスの値とバージョンに基づいて、 SQL Server SQL Server 型を テキスト にマップします。

Ulcolumnsize の値がマルチバイト文字のデータ型の列の最大長よりも小さい場合、 SQL Server Native Client OLE DB プロバイダーは Dbcolumndesc rgPropertySets メンバーを検査します。 DBPROP_COL_FIXEDLENGTH が VARIANT_TRUE 場合、 SQL Server Native Client OLE DB プロバイダーは型を char にマップします。 プロパティの値が VARIANT_FALSE 場合、 SQL Server Native Client OLE DB プロバイダーは型を 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 ServerNative Client OLE DB プロバイダーは、DBCOLUMNDESC 構造体の Ulcolumnsize メンバーを検査します。 Native Client OLE DB プロバイダーは、値に基づいて、 SQL Server 型を ntext にマップします。

Ulcolumnsize の値が Unicode 文字のデータ型の列の最大長よりも小さい場合、 SQL Server Native Client OLE DB プロバイダーは Dbcolumndesc rgPropertySets メンバーを検査します。 DBPROP_COL_FIXEDLENGTH が VARIANT_TRUE 場合、 SQL Server Native Client OLE DB プロバイダーはその型を nchar にマップします。 プロパティの値が VARIANT_FALSE 場合は、 SQL Server Native Client OLE DB プロバイダーによって型が nvarchar にマップされます。 いずれの場合も、DBCOLUMNDESC の ulColumnSize メンバーによって、作成される SQL Server の列の幅が決まります。
DBTYPE_XML XML

注意

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

参照

データ型 (OLE DB)