Obsługa kolumn rozrzednych w sterowniku OLE DB dla programu SQL Server
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Sterownik OLE DB dla programu SQL Server obsługuje rozrzedłe kolumny. Aby uzyskać więcej informacji na temat rozrzednych kolumn w programie SQL Server, zobacz Use Sparse Columns and Use Column Sets.
Aby uzyskać więcej informacji na temat obsługi kolumn rozrzednia w sterowniku OLE DB dla programu SQL Server, obsługa kolumn rozrzednych (OLE DB).
Scenariusze użytkownika dla kolumn rozrzednych i sterownika OLE DB dla programu SQL Server
Poniższa tabela zawiera podsumowanie typowych scenariuszy użytkownika sterowników OLE DB dla użytkowników programu SQL Server z rozrzednymi kolumnami:
Scenariusz | Zachowanie |
---|---|
wybrać * z tabeli lub IOpenRowset::OpenRowset. | Zwraca wszystkie kolumny, które nie należą do rozrzednych column_set, oraz kolumnę XML zawierającą wartości wszystkich kolumn innych niż null, które są elementami członkowskimi rozrzednych column_set. |
Odwołuj się do kolumny według nazwy. | Do kolumny można odwoływać się niezależnie od stanu rozrzedzonych kolumn lub column_set członkostwa. |
Uzyskiwanie dostępu do kolumn column_set składowych za pośrednictwem obliczonej kolumny XML. | Dostęp do kolumn będących elementami członkowskimi rozrzedzonego column_set można uzyskać, wybierając column_set według nazwy i mogą zawierać wartości wstawione i aktualizowane przez zaktualizowanie kodu XML w kolumnie column_set. Wartość musi być zgodna ze schematem dla kolumn column_set. |
Pobieranie metadanych dla wszystkich kolumn w tabeli za pośrednictwem zestawu wierszy schematu DBSCHEMA_COLUMNS bez ograniczeń kolumn (OLE DB). | Zwraca wiersz dla wszystkich kolumn, które nie są elementami członkowskimi column_set. Jeśli tabela ma rozrzedzone column_set, zostanie zwrócony wiersz. Należy pamiętać, że nie zwraca to metadanych dla kolumn, które są elementami członkowskimi column_set. |
Pobierz metadane dla wszystkich kolumn niezależnie od rozrzedu lub członkostwa w column_set. Może to zwrócić bardzo dużą liczbę wierszy. | Wywołaj zestaw wierszy schematu IDBSchemaRowset::GetRowset dla zestawu wierszy schematu DBSCHEMA_COLUMNS_EXTENDED. |
Pobierz metadane tylko dla kolumn, które są elementami członkowskimi column_set. Może to zwrócić bardzo dużą liczbę wierszy. | Wywołaj zestaw wierszy schematu IDBSchemaRowset::GetRowset dla zestawu wierszy schematu DBSCHEMA_SPARSE_COLUMN_SET. |
Ustal, czy kolumna jest rozrzedona. | Zapoznaj się z kolumną SS_IS_SPARSE zestawu wierszy schematu DBSCHEMA_COLUMNS (OLE DB). |
Ustal, czy kolumna jest column_set. | Zapoznaj się z kolumną SS_IS_COLUMN_SET zestawu wierszy schematu DBSCHEMA_COLUMNS. Możesz też zapoznać się z dwFlags zwrócone przez IColumnsinfo::GetColumnInfo lub DBCOLUMNFLAGS w zestawie wierszy zwróconym przez IColumnsRowset::GetColumnsRowset. W przypadku kolumn column_set zostanie ustawiona DBCOLUMNFLAGS_SS_ISCOLUMNSET. |
Importowanie i eksportowanie rozrzedżonych kolumn według narzędzia BCP dla tabeli bez column_set. | Brak zmian zachowania z poprzednich wersji sterownika OLE DB dla programu SQL Server. |
Importowanie i eksportowanie rozrzedżonych kolumn według narzędzia BCP dla tabeli z column_set. |
column_set jest importowany i eksportowany w taki sam sposób jak xml; oznacza to, że varbinary(max), jeśli jest powiązany jako typ binarny, lub jako nvarchar(max), jeśli jest powiązany jako char lub wchar typ. Kolumny, które są członkami rozrzedżonych column_set, nie są eksportowane jako odrębne kolumny; są eksportowane tylko w wartości column_set. |
zachowanie zapytań dla programu BCP. | Brak zmian w obsłudze jawnie nazwanych kolumn z poprzednich wersji sterownika OLE DB dla programu SQL Server. Scenariusze obejmujące importowanie i eksportowanie między tabelami z różnymi schematami mogą wymagać specjalnej obsługi. Aby uzyskać więcej informacji na temat narzędzia BCP, zobacz Obsługa kopiowania zbiorczego (BCP) dla kolumn rozrzednych w dalszej części tego tematu. |
zachowanie klienta Down-Level
Klienci na poziomie podrzędnym będą zwracać metadane tylko dla kolumn, które nie są elementami członkowskimi rozrzednych column_set dla kolumn SQLColumns i DBSCHEMA_COLUMNS.
Klienci na poziomie podrzędnym mogą uzyskiwać dostęp do kolumn, które są elementami członkowskimi rozrzedzielonego column_set według nazwy, a kolumna column_set będzie dostępna jako kolumna XML dla klientów programu SQL Server 2005 (9.x).
Obsługa kopiowania zbiorczego (BCP) dla kolumn rozrzednych
Nie ma żadnych zmian w interfejsie API BCP w bazie danych OLE DLA rozrzednych kolumn lub funkcji column_set.
Jeśli tabela ma column_set, kolumny rozrzedzonych nie są obsługiwane jako odrębne kolumny. Wartości wszystkich rozrzedżonych kolumn są uwzględniane w wartości column_set, która jest eksportowana w taki sam sposób jak kolumna XML; oznacza to, że varbinary(max), jeśli jest powiązana jako typ binarny, lub jako nvarchar(max), jeśli jest powiązana jako char lub wchar typ). Podczas importowania wartość column_set musi być zgodna ze schematem column_set.
W przypadku operacji zapytań nie ma żadnych zmian w sposobie obsługi jawnie przywoływanych kolumn. column_set kolumny mają takie samo zachowanie jak kolumny XML i rozrzedzania nie ma wpływu na obsługę nazwanych kolumn rozrzedzania.
Jeśli jednak zapytania są używane do eksportu i odwołujesz się do rozrzedżonych kolumn, które są elementami członkowskimi rozrzedzona kolumna ustawiona według nazwy, nie można wykonać bezpośredniego importu do podobnie ustrukturyzowanej tabeli. Dzieje się tak, ponieważ program BCP używa metadanych spójnych z operacji select * dla importu i nie jest w stanie dopasować kolumn column_set składowych z tym metadanymi. Aby zaimportować kolumny column_set składowych indywidualnie, należy zdefiniować widok w tabeli odwołującej się do żądanych kolumn column_set i należy wykonać operację importowania przy użyciu widoku.
Zobacz też
Sterownik OLE DB dla programu SQL Server