疏鬆資料行支援 (OLE DB)

本主題提供疏鬆數據行之 SQL Server Native Client OLE DB 支援的相關信息。 如需疏鬆數據行的詳細資訊,請參閱 SQL Server Native Client 中的疏鬆數據行支援。 如需範例,請參閱顯示資料行與疏鬆資料行的目錄中繼資料 (OLE DB)

OLE DB 陳述式中繼資料

從 SQL Server 2008 開始,可以使用新的 DBCOLUMNFLAGS 旗標值DBCOLUMNFLAGS_SS_ISCOLUMNSET。 此值應該針對值的數據 column_set 行設定。 您可以透過 IColumnsInfo::GetColumnsInfo 的 dwFlags 參數和 IColumnsRowset::GetColumnsRowset 所傳回之資料列集的 DBCOLUMN_FLAGS 資料行,來擷取 DBCOLUMNFLAGS 旗標。

OLE DB 目錄中繼資料

系統已經將兩個額外的 SQL Server 專用資料行新增至 DBSCHEMA_COLUMNS 中。

資料行名稱 資料類型 值/註解
SS_IS_SPARSE DBTYPE_BOOL 如果資料行為疏鬆資料行,這個值為 VARIANT_TRUE,否則為 VARIANT_FALSE。
SS_IS_COLUMN_SET DBTYPE_BOOL 如果數據行是疏鬆 column_set 數據行,則此值VARIANT_TRUE,否則為VARIANT_FALSE。

系統也已經加入兩個額外的結構描述資料列集。 這些資料列集與 DBSCHEMA_COLUMNS 的結構相同,但傳回不同的內容。 不論成員資格為何 column_set ,DBSCHEMA_COLUMNS_EXTENDED都會傳回所有數據行。 DBSCHEMA_SPARSE_COLUMN_SET只會傳回疏鬆 column_set成員的數據行。

OLE DB DataTypeCompatibility 行為

DataTypeCompatibility=80 (在 連接字串 中) 的行為與 SQL Server 2000 用戶端一致,如下所示:

  • 您看不到新的結構描述資料列集,而且在結構描述資料列集中沒有它們的資料列。

  • 您看不到 COLUMNS 資料列集中的新資料行。

  • 數據行未設定 column_set DBCOLUMNFLAGS_SS_ISCOLUMNSET。

  • DBCOMPUTEMODE_NOTCOMPUTED為 column_set 數據行設定。

疏鬆資料行的 OLE DB 支援

SQL Server Native Client 中修改了下列 OLE DB 介面,以支援疏鬆數據行:

類型或成員函數 描述
IColumnsInfo::GetColumnsInfo 為 dwFlags 中的數據行設定column_set新的 DBCOLUMNFLAGS 旗標值DBCOLUMNFLAGS_SS_ISCOLUMNSET。

DBCOLUMNFLAGS_WRITE為數據 column_set 行設定。
IColumsRowset::GetColumnsRowset 新的 DBCOLUMNFLAGS 旗標值DBCOLUMNFLAGS_SS_ISCOLUMNSET會針對 column_set DBCOLUMN_FLAGS中的數據行設定。

DBCOLUMN_COMPUTEMODE設定為數據行DBCOMPUTEMODE_DYNAMIC column_set
IDBSchemaRowset::GetSchemaRowset DBSCHEMA_COLUMNS 會傳回兩個新的資料行:SS_IS_COLUMN_SET 和 SS_IS_SPARSE。

DBSCHEMA_COLUMNS只會傳回不是 成員的數據 column_set行。

已新增兩個新的架構數據列集: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 IOpenRowset::OpenRowset 會在相同資料表上使用 select * 查詢,傳回具有與 ICommand::Execute 相同資料行的資料列集。
ITableDefinition 疏鬆數據行或 column_set 數據行不會變更此介面。 需要修改結構描述的應用程式必須直接執行適當的 Transact-SQL。

另請參閱

SQL Server Native Client (OLE DB)