疏鬆資料行支援 (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。 |