Freigeben über


Unterstützung für Spalten mit geringer Dichte in SQL Server Native Client

SQL Server Native Client unterstützt sparse Spalten. Weitere Informationen zu Sparsespalten in SQL Server finden Sie unter Verwenden von Spalten mit geringer Dichte und Verwenden von Spaltensätzen.

Weitere Informationen zur Unterstützung von Sparsespalten in SQL Server Native Client finden Sie unter "Unterstützung für Sparse Columns" (ODBC) und "Sparse Columns Support(OLE DB)".For more information about sparse column support in SQL Server Native Client, see Sparse Columns Support (ODBC) and Sparse Columns Support (OLE DB).

Informationen zu Beispielanwendungen, die dieses Feature veranschaulichen, finden Sie unter SQL Server-Datenprogrammierungsbeispiele.

Benutzerszenarien für Spalten mit geringer Dichte und SQL Server Native Client

In der folgenden Tabelle sind die allgemeinen Benutzerszenarien für SQL Server Native Client-Benutzer mit geringen Spalten zusammengefasst:

Szenario Verhalten
select * from table oder IOpenRowset::OpenRowset. Gibt alle Spalten zurück, die keine Member der Sparse column_setsind, sowie eine XML-Spalte, die die Werte aller Nicht-Null-Spalten enthält, die Member der Sparse column_setsind.
Verweisen auf eine Spalte über den Namen Auf die Spalte kann unabhängig vom geringen Spaltenstatus oder column_set der Mitgliedschaft verwiesen werden.
Greifen Sie auf column_set Memberspalten über eine berechnete XML-Spalte zu. Auf Spalten, die Elemente der geringen Menge column_set sind, kann durch Auswählen des column_set Namens zugegriffen werden, und es können Werte eingefügt und aktualisiert werden, indem sie den XML-Code in der column_set Spalte aktualisieren.

Der Wert muss dem Schema für column_set Spalten entsprechen.
Abrufen von Metadaten für alle Spalten in einer Tabelle über SQLColumns mit einem Spaltensuchmuster von NULL oder "%" (ODBC); oder über das DBSCHEMA_COLUMNS Schema-Rowset ohne Spalteneinschränkung (OLE DB). Gibt eine Zeile für alle Spalten zurück, die keine Elemente eines .column_set Wenn die Tabelle über eine geringe Menge column_setverfügt, wird eine Zeile dafür zurückgegeben.

Beachten Sie, dass dadurch keine Metadaten für Spalten zurückgegeben werden, die Member eines Objekts column_setsind.
Abrufen von Metadaten für alle Spalten, unabhängig von der Geringen Größe oder Mitgliedschaft in einer column_set. Hier könnte eine sehr große Anzahl an Zeilen zurückgegeben werden. Legen Sie das Deskriptorfeld SQL_SOPT_SS_NAME_SCOPE auf SQL_SS_NAME_SCOPE_EXTENDED fest, und rufen Sie SQLColumns (ODBC) auf.

Call IDBSchemaRowset::GetRowset for the DBSCHEMA_COLUMNS_EXTENDED schema rowset (OLE DB).

Dieses Szenario ist aus einer Anwendung, die SQL Server Native Client aus einer Version vor SQL Server 2008 verwendet, nicht möglich. Eine solche Anwendung könnte jedoch Systemansichten direkt abfragen.
Dient zum Abrufen von Metadaten nur für Spalten, die Member eines Objekts column_setsind. Hier könnte eine sehr große Anzahl an Zeilen zurückgegeben werden. Legen Sie das Deskriptorfeld SQL_SOPT_SS_NAME_SCOPE auf SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET fest, und rufen Sie SQLColumns (ODBC) auf.

Call IDBSchemaRowset::GetRowset for the DBSCHEMA_SPARSE_COLUMN_SET schema rowset (OLE DB).

Dieses Szenario ist aus einer Anwendung, die SQL Server Native Client aus einer Version vor SQL Server 2008 verwendet, nicht möglich. Eine solche Anwendung könnte jedoch Systemsichten abfragen.
Bestimmen, ob eine Spalte eine geringe Dichte aufweist Sehen Sie sich die SS_IS_SPARSE Spalte des SQLColumns-Resultsets (ODBC) an.

Betrachten Sie die SS_IS_SPARSE-Spalte des DBSCHEMA_COLUMNS-Schemarowsets (OLE DB).

Dieses Szenario ist aus einer Anwendung, die SQL Server Native Client aus einer Version vor SQL Server 2008 verwendet, nicht möglich. Eine solche Anwendung könnte jedoch Systemsichten abfragen.
Ermitteln Sie, ob es sich bei einer Spalte um eine column_set. Lesen Sie die SS_IS_COLUMN_SET Spalte des SQLColumns-Resultsets. Oder wenden Sie sich an das SQL Server-spezifische Spalten-Attribut SQL_CA_SS_IS_COLUMN_SET (ODBC).

Betrachten Sie die SS_IS_COLUMN_SET-Spalte des DBSCHEMA_COLUMNS-Schemarowsets. Betrachten Sie alternativ dwFlags, das von IColumnsInfo::GetColumnInfo zurückgegeben wird, oder DBCOLUMNFLAGS in dem von IColumnsRowset::GetColumnsRowset zurückgegebenen Rowset. Für column_set Spalten wird DBCOLUMNFLAGS_SS_ISCOLUMNSET (OLE DB) festgelegt.

Dieses Szenario ist aus einer Anwendung, die SQL Server Native Client aus einer Version vor SQL Server 2008 verwendet, nicht möglich. Eine solche Anwendung könnte jedoch Systemsichten abfragen.
Importieren und Exportieren von geringen Spalten nach BCP für eine Tabelle ohne column_set. Keine Änderung des Verhaltens von früheren Versionen von SQL Server Native Client.
Importieren und Exportieren von geringen Spalten nach BCP für eine Tabelle mit einer column_set. Die column_set Datei wird auf die gleiche Weise wie XML importiert und exportiert, d. h., als varbinary(max) ob sie als Binärtyp gebunden ist, oder als nvarchar(max) ob sie als Ein char - oder Wchar-Typ gebunden ist.

Spalten, die Elemente der Sparse column_set sind, werden nicht als unterschiedliche Spalten exportiert. Sie werden nur im Wert der column_set.
queryout Verhalten für BCP. Keine Änderung der Verarbeitung explizit benannter Spalten aus früheren Versionen von SQL Server Native Client.

In Szenarien, die das Importieren und Exportieren zwischen Tabellen mit unterschiedlichen Schemas umfassen, ist möglicherweise eine besondere Behandlung erforderlich.

Weitere Informationen über BCP finden Sie unter „Massenkopierunterstützung (BCP) für Spalten mit geringer Dichte” weiter unten in diesem Thema.

Downlevelclient-Verhalten

Clients auf unterer Ebene geben Metadaten nur für Spalten zurück, die keine Member der Geringen Für column_set SQLColumns und DBSCHMA_COLUMNS sind. Die in SQL Server 2008 Native Client eingeführten zusätzlichen OLE DB-Schemazeilen sind nicht verfügbar, und die Änderungen an SQLColumns in ODBC über SQL_SOPT_SS_NAME_SCOPE.

Clients auf der unteren Ebene können auf Spalten zugreifen, die Mitglieder der geringen Menge column_set nach Namen sind, und auf die column_set Spalte kann als XML-Spalte für SQL Server 2005-Clients zugegriffen werden.

Massenkopierunterstützung (BCP) für Spalten mit geringer Dichte

Es gibt keine Änderungen an der BCP-API in ODBC oder OLE DB für die geringen Spalten oder column_set Features.

Wenn eine Tabelle über eine column_set, geringe Spalten verfügt, werden sie nicht als unterschiedliche Spalten behandelt. Die Werte aller spalten mit geringem Wert werden in den Wert des column_setXml-Elements eingeschlossen, der auf die gleiche Weise wie eine XML-Spalte exportiert wird. Das heißt, als varbinary(max) wäre sie als binärtyp gebunden oder als nvarchar(max) als Gebundeneschar oder Wchar-Typ gebunden). Beim Import muss der column_set Wert dem Schema der column_set.

Bei queryout Vorgängen gibt es keine Änderung der Art und Weise, wie explizit referenzierte Spalten behandelt werden. column_set Spalten haben das gleiche Verhalten wie XML-Spalten, und die Geringen Haben hat keine Auswirkungen auf die Behandlung von benannten Spalten mit geringem Anteil.

Wenn queryout sie jedoch für den Export verwendet wird und Sie auf sparse Spalten verweisen, die Member der mit Namen festgelegten geringen Spalten sind, können Sie keinen direkten Import in eine ähnlich strukturierte Tabelle durchführen. Dies liegt daran, dass BCP Metadaten verwendet, die mit einem Select * -Vorgang für den Import konsistent sind und keine Memberspalten mit diesen Metadaten abgleichen column_set können. Um Memberspalten einzeln zu importieren column_set , müssen Sie eine Ansicht in der Tabelle definieren, die auf die gewünschten column_set Spalten verweist, und Sie müssen den Importvorgang mithilfe der Ansicht ausführen.

Siehe auch

Programmierung für SQL Server Native Client