スパース列のサポート (OLE DB)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
このトピックでは、OLE DB Driver for SQL Server のスパース列のサポートに関する情報を提供します。 スパース列の詳細については、「OLE DB Driver for SQL Server のスパース列のサポート」を参照してください。 サンプルについては、「スパース列に対する列およびカタログ メタデータの表示 (OLE DB)」を参照してください。
OLE DB ステートメント メタデータ
SQL Server 2008 (10.0.x) 以降では、新しい DBCOLUMNFLAGS フラグ値である DBCOLUMNFLAGS_SS_ISCOLUMNSET を使用できます。 この値は、column_set 値である列に対して設定する必要があります。 DBCOLUMNFLAGS フラグは、IColumnsInfo::GetColumnsInfo の dwFlags パラメーターと、IColumnsRowset::GetColumnsRowset から返される行セットの DBCOLUMN_FLAGS 列を使用して取得できます。
OLE DB カタログ メタデータ
DBSCHEMA_COLUMNS に、SQL Server 固有の列が 2 つ追加されています。
列名 | データ型 | 値およびコメント |
---|---|---|
SS_IS_SPARSE | DBTYPE_BOOL | 列がスパース列の場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE になります。 |
SS_IS_COLUMN_SET | DBTYPE_BOOL | 列がスパース column_set 列の場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE になります。 |
また、2 つのスキーマ行セットが追加されています。 これらの行セットは、構造は DBSCHEMA_COLUMNS と同じですが、返される内容が異なります。 DBSCHEMA_COLUMNS_EXTENDED は、スパース列かどうか、column_set のメンバーかどうかに関係なく、すべての列を返します。 DBSCHEMA_SPARSE_COLUMN_SET は、スパース column_set のメンバーである列のみを返します。
OLE DB DataTypeCompatibility の動作
(接続文字列内に) DataTypeCompatibility=80 を使用した場合の動作は、次のように SQL Server 2000 (8.x) クライアントと一貫性があります。
新しいスキーマ行セットは表示されず、スキーマ行セットの行セットにそれらのスキーマ行セットの行は含まれません。
COLUMNS 行セット内の新しい列は表示されません。
DBCOLUMNFLAGS_SS_ISCOLUMNSET が column_set 列に対して設定されません。
DBCOMPUTEMODE_NOTCOMPUTED が column_set 列に対して設定されます。
OLE DB によるスパース列のサポート
次の OLE DB インターフェイスは、OLE DB Driver for SQL Server でスパース列をサポートするように修正されました。
型またはメンバー関数 | 説明 |
---|---|
IColumnsInfo::GetColumnsInfo | dwFlags で、新しい DBCOLUMNFLAGS フラグ値である DBCOLUMNFLAGS_SS_ISCOLUMNSET が column_set 列に対して設定されます。 DBCOLUMNFLAGS_WRITE が column_set 列に対して設定されます。 |
IColumsRowset::GetColumnsRowset | DBCOLUMN_FLAGS で、新しい DBCOLUMNFLAGS フラグ値である DBCOLUMNFLAGS_SS_ISCOLUMNSET が column_set 列に対して設定されます。 column_set 列に対して DBCOLUMN_COMPUTEMODE が DBCOMPUTEMODE_DYNAMIC に設定されます。 |
IDBSchemaRowset::GetSchemaRowset | DBSCHEMA_COLUMNS が、SS_IS_COLUMN_SET と SS_IS_SPARSE という 2 つの新しい列を返します。 DBSCHEMA_COLUMNS は、column_set のメンバーでない列のみを返します。 2 つの新しいスキーマ行セットが追加されています。DBSCHEMA_COLUMNS_EXTENDED は、スパース column_set のメンバーシップに関係なくすべての列を返します。 DBSCHEMA_SPARSE_COLUMN_SET は、column_set のメンバーである列のみを返します。 これらの新しい行セットの列と制限は DBSCHEMA_COLUMNS と同じです。 |
IDBSchemaRowset::GetSchemas | IDBSchemaRowset::GetSchemas の使用可能なスキーマ行セットの一覧に、新しい行セットである DBSCHEMA_COLUMNS_EXTENDED と DBSCHEMA_SPARSE_COLUMN_SET の GUID が含まれます。 |
ICommand::Execute | select * from table を使用すると、スパース column_setのメンバーではないすべての列と、スパース column_setのメンバーである null 以外のすべての列の値を含む XML 列が返されます (存在する場合)。 |
IOpenRowset::OpenRowset | 同じテーブルに対して select * クエリを使用すると、IOpenRowset::OpenRowset から ICommand::Execute と同じ列を持つ行セットが返されます。 |
ITableDefinition | このインターフェイスには、スパース列や column_set 列のための変更はありません。 スキーマを変更する必要のあるアプリケーションでは、適切な Transact-SQL を直接実行する必要があります。 |