Verwenden von SpaltensätzenUse Column Sets

Anwendungsbereich:Applies to: JaSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) und höher JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed Instance JaAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics JaParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data WarehouseAnwendungsbereich:Applies to: JaSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed Instance JaAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics JaParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

Für Tabellen, die Sparsespalten aufweisen, können Sie einen Spaltensatz festlegen, der alle Sparsespalten in der Tabelle zurückgibt.Tables that use sparse columns can designate a column set to return all sparse columns in the table. Bei einem Spaltensatz handelt es sich um eine nicht typisierte XML-Darstellung, die alle Sparsespalten einer Tabelle in einer strukturierten Ausgabe kombiniert.A column set is an untyped XML representation that combines all the sparse columns of a table into a structured output. Wie auch berechnete Spalten werden Spaltensätze nicht physisch in der Tabelle gespeichert.A column set is like a calculated column in that the column set is not physically stored in the table. Der Unterschied zwischen einem Spaltensatz und einer berechneten Spalte besteht darin, dass der Spaltensatz direkt aktualisiert werden kann.A column set differs from a calculated column in that the column set is directly updatable.

Verwenden Sie Spaltensätze, wenn die Tabelle eine große Anzahl an Spalten enthält und es sehr aufwändig ist, jede Spalte einzeln zu verarbeiten.You should consider using column sets when the number of columns in a table is large, and operating on them individually is cumbersome. Außerdem verbessert sich die Anwendungsleistung, wenn zum Auswählen und Einfügen von Daten bei Tabellen mit sehr vielen Spalten Spaltensätze verwendet werden.Applications might see some performance improvement when they select and insert data by using column sets on tables that have lots of columns. Die Leistung von Spaltensätzen kann jedoch beeinträchtigt werden, wenn für die Spalten in der Tabelle sehr viele Indizes definiert werden.However, the performance of column sets can be reduced when many indexes are defined on the columns in the table. Das liegt daran, dass in diesem Fall für einen Ausführungsplan mehr Arbeitsspeicher erforderlich ist.This is because the amount of memory that is required for an execution plan increases.

Zum Definieren eines Spaltensatzes verwenden Sie die Schlüsselwörter FOR ALL_SPARSE_COLUMNS in der CREATE TABLE-Anweisung oder in der ALTER TABLE-Anweisung.To define a column set, use the <column_set_name> FOR ALL_SPARSE_COLUMNS keywords in the CREATE TABLE or ALTER TABLE statements.

Richtlinien zum Verwenden von SpaltensätzenGuidelines for Using Column Sets

Wenn Sie Spaltensätze verwenden, beachten Sie die folgenden Richtlinien:When you use column sets, consider the following guidelines:

  • Spalten mit geringer Dichte und ein Spaltensatz können als Teil der gleichen Anweisung hinzugefügt werden.Sparse columns and a column set can be added as part of the same statement.

  • Sie können einer Tabelle, die bereits Sparsespalten enthält, keinen Spaltensatz hinzufügen.A column set cannot be added to a table if that table already contains sparse columns.

  • Der Spaltensatz kann nicht geändert werden.The column set cannot be changed. Um einen Spaltensatz zu ändern, müssen Sie die Sparsespalten und den Spaltensatz neu erstellen.To change a column set, you must delete and re-create the sparse columns and the column set.

  • Sie können einen Spaltensatz Tabellen hinzufügen, die keine Sparsespalten enthalten.A column set can be added to a table that does not include any sparse columns. Wenn Sie der Tabelle zu einem späteren Zeitpunkt Sparsespalten hinzufügen, werden diese im Spaltensatz angezeigt.If sparse columns are later added to the table, they will appear in the column set.

  • Es ist nur ein Spaltensatz pro Tabelle zulässig.Only one column set is allowed per table.

  • Spaltensätze sind optional, d. h. zur Verwendung von Sparsespalten nicht zwingend erforderlich.A column set is optional and is not required to use sparse columns.

  • Für einen Spaltensatz können keine Einschränkungen oder Standardwerte definiert werden.Constraints or default values cannot be defined on a column set.

  • Berechnete Spalten können keine Spaltensatz-Spalten enthalten.Computed columns cannot contain column set columns.

  • Verteilte Abfragen werden von Tabellen mit Spaltensätzen nicht unterstützt.Distributed queries are not supported on tables that contain column sets.

  • Die Replikation unterstützt Spaltensätze nicht.Replication does not support column sets.

  • Change Data Capture unterstützt Spaltensätze nicht.Change data capture does not support column sets.

  • Ein Spaltensatz darf nicht Teil irgendeiner Art von Index sein.A column set cannot be part of any kind of index. Dies gilt auch für XML-Indizes, Volltextindizes und indizierte Sichten.This includes XML indexes, full-text indexes, and indexed views. Ein Spaltensatz kann einem Index nicht als eingeschlossene Spalte hinzugefügt werden.A column set cannot be added as an included column in any index.

  • Ein Spaltensatz darf nicht im Filterausdruck eines gefilterten Indexes oder einer gefilterten Statistik verwendet werden.A column set cannot be used in the filter expression of a filtered index or filtered statistics.

  • Ein in einer Sicht enthaltener Spaltensatz wird als XML-Spalte angezeigt.When a view includes a column set, the column set appears in the view as an XML column.

  • Ein Spaltensatz darf nicht in einer indizierten Sichtdefinition enthalten sein.A column set cannot be included in an indexed view definition.

  • Partitionierte Sichten, die Tabellen mit Spaltensätzen enthalten, können aktualisiert werden, wenn die Sparsespalten in der partitionierten Sicht mit Namen angegeben sind.Partitioned views that include tables that contain column sets are updatable when the partitioned view specifies the sparse columns by name. Eine partitionierte Sicht kann nicht aktualisiert werden, wenn sie lediglich einen Verweis auf den Spaltensatz enthält.A partitioned view is not updatable when it references the column set.

  • Abfragebenachrichtigungen, die auf Spaltensätze verweisen, sind nicht zulässig.Query notifications that refer to column sets are not permitted.

  • Für XML-Daten gilt eine Größenbeschränkung von 2 GB.XML data has a size limit of 2 GB. Wenn die gesamte Datengröße aller Sparsespalten ungleich NULL in einer Zeile diesen Wert überschreitet, wird für die Abfrage bzw. den DML-Vorgang ein Fehler ausgegeben.If the combined data of all the nonnull sparse columns in a row exceeds this limit, the query or DML operation will produce an error.

  • Informationen zu den Daten, die von der Funktion COLUMNS_UPDATED zurückgegeben werden, finden Sie unter Verwenden von Spalten mit geringer Dichte.For information about the data that is returned by the COLUMNS_UPDATED function, see Use Sparse Columns.

Richtlinien zum Auswählen von Daten aus einem SpaltensatzGuidelines for Selecting Data from a Column Set

Beim Auswählen von Daten aus einem Spaltensatz sind die folgenden Richtlinien zu beachten:Consider the following guidelines for selecting data from a column set:

  • Grundsätzlich handelt es sich bei einem Spaltensatz um eine aktualisierbare, berechnete XML-Spalte, die einen Satz zugrunde liegender relationaler Spalten in einer XML-Darstellung zusammenfasst.Conceptually, a column set is a type of updatable, computed XML column that aggregates a set of underlying relational columns into a single XML representation. Der Spaltensatz unterstützt nur die ALL_SPARSE_COLUMNS-Eigenschaft.The column set only supports the ALL_SPARSE_COLUMNS property. Diese Eigenschaft dient zur Zusammenfassung aller Werte ungleich NULL in allen Sparsespalten für eine bestimmte Zeile.This property is used to aggregate all nonnull values from all sparse columns for a particular row.

  • Im SQL Server Management StudioSQL Server Management Studio -Tabellen-Editor werden Spaltensätze als bearbeitbare XML-Felder angezeigt.In the SQL Server Management StudioSQL Server Management Studio table editor, column sets are displayed as an editable XML field. Definieren Sie Spaltensätze im folgenden Format:Define column sets in the format:

    <column_name_1>value1</column_name_1><column_name_2>value2</column_name_2>...  
    

    Beispiele für Spaltensatzwerte:Examples of column set values are as follows:

    • <sparseProp1>10</sparseProp1><sparseProp3>20</sparseProp3>

    • <DocTitle>Bicycle Parts List</DocTitle><Region>West</Region>

  • Spalten mit geringer Dichte, die NULL-Werte enthalten, werden in der XML-Darstellung des Spaltensatzes nicht berücksichtigt.Sparse columns that contain null values are omitted from the XML representation for the column set.

Warnung

Durch das Hinzufügen eines Spaltensatzes ändert sich das Verhalten von SELECT *-Abfragen.Adding a column set changes the behavior of SELECT * queries. Statt der einzelnen Sparsespalten wird der Spaltensatz als XML-Spalte zurückgegeben.The query will return the column set as an XML column and not return the individual sparse columns. Schema-Designer und Softwareentwickler müssen darauf achten, dass der Code vorhandener Anwendungen hierdurch nicht gestört wird.Schema designers and software developers must be careful not to break existing applications.

Einfügen und Ändern von Daten in einem SpaltensatzInserting or Modifying Data in a Column Set

Zur Änderung von Daten in einem Spaltensatz verwenden Sie die Namen der einzelnen Spalten. Sie können auch auf den Namen des Spaltensatzes verweisen und die Werte des Spaltensatzes angeben, indem Sie das XML-Format des Spaltensatzes verwenden.Data manipulation of a sparse column can be performed by using the name of the individual columns, or by referencing the name of the column set and specifying the values of the column set by using the XML format of the column set. Spalten mit geringer Dichte können in der XML-Spalte in beliebiger Reihenfolge angezeigt werden.Sparse columns can appear in any order in the XML column.

Wenn Sie die Werte von Sparsespalten mit dem XML-Spaltensatz einfügen bzw. aktualisieren, werden die Werte, die in die zugrunde liegenden Sparsespalten eingefügt werden, automatisch vom xml -Datentyp konvertiert.When sparse column values are inserted or updated by using the XML column set, the values that are inserted into the underlying sparse columns are implicitly converted from the xml data type. Bei numerischen Spalten werden leere Werte im XML-Format in leere Zeichenfolgen konvertiert.In the case of numeric columns, a blank value in the XML for the numeric column converts to an empty string. Hierdurch wird der Wert 0 in die numerische Spalte eingefügt, wie im folgenden Beispiel gezeigt.This causes a zero to be inserted into the numeric column as shown in the following example.

CREATE TABLE t (i int SPARSE, cs xml column_set FOR ALL_SPARSE_COLUMNS);  
GO  
INSERT t(cs) VALUES ('<i/>');  
GO  
SELECT i FROM t;  
GO  

In diesem Beispiel wurde kein Wert für die Spalte iangegeben, und der Wert 0 wurde eingefügt.In this example, no value was specified for the column i, but the value 0 was inserted.

Verwenden des sql_variant-DatentypsUsing the sql_variant Data Type

Der sql_variant -Datentyp kann mehrere unterschiedliche Datentypen speichern, z.B. int, charund date.The sql_variant date type can store multiple different data types, such as int, char, and date. Spaltensätze geben Datentypinformationen zu Dezimalstellen, Genauigkeit und Gebietsschema, die mit einem sql_variant -Wert verknüpft sind, in der generierten XML-Spalte als Attribute aus.Column sets output the data type information such as scale, precision, and locale information that is associated with a sql_variant value as attributes in the generated XML column. Wenn Sie versuchen, diese Attribute in einer benutzerdefinierten XML-Anweisung als Eingabe für einen INSERT- oder UPDATE-Vorgang für einen Spaltensatz bereitzustellen, sind einige dieser Attribute obligatorisch, und anderen wird ein Standardwert zugewiesen.If you try to provide these attributes in a custom-generated XML statement as an input for an insert or update operation on a column set, some of these attributes are required and some of them are assigned a default value. In der folgenden Tabelle sind die Datentypen und die Standardwerte aufgeführt, die vom Server generiert werden, wenn der Wert nicht angegeben wird.The following table lists the data types and the default values that the server generates when the value is not provided.

DatentypData type localeID*localeID* sqlCompareOptionssqlCompareOptions sqlCollationVersionsqlCollationVersion SqlSortIdSqlSortId Maximale LängeMaximum length PrecisionPrecision SkalierenScale
char, varchar, binarychar, varchar, binary -1-1 'Standardwert''Default' 00 00 8.0008000 Nicht zutreffend**Not applicable** Nicht verfügbarNot applicable
nvarcharnvarchar -1-1 'Standardwert''Default' 00 00 40004000 Nicht verfügbarNot applicable Nicht verfügbarNot applicable
decimal, float, realdecimal, float, real Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable 1818 00
integer, bigint, tinyint, smallintinteger, bigint, tinyint, smallint Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable
datetime2datetime2 Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable 77
datetime offsetdatetime offset Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable 77
datetime, date, smalldatetimedatetime, date, smalldatetime Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable
money, smallmoneymoney, smallmoney Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable
timetime Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable Nicht verfügbarNot applicable 77

* „localeID -1“ ist das Standardgebietsschema.* localeID -1 means the default locale. Das englischsprachige Gebietsschema ist 1033.The English locale is 1033.

** Nicht zutreffend = Bei einem SELECT-Vorgang für den Spaltensatz werden für diese Attribute keine Werte ausgegeben.** Not applicable = No values are output for these attributes during a select operation on the column set. Gibt eine Fehlermeldung zurück, wenn für dieses Attribut von dem Aufrufer in der für einen Spaltensatz in einem INSERT- oder UPDATE-Vorgang bereitgestellten XML-Darstellung ein Wert angegeben wird.Generates an error when a value is specified for this attribute by the caller in the XML representation provided for a column set in an insert or update operation.

SicherheitSecurity

Das Sicherheitsmodell für Spaltensätze funktioniert ähnlich wie das Sicherheitsmodell zwischen Tabellen und Spalten.The security model for a column set works similar to the security model that exists between table and columns. Spaltensätze können als Minitabellen visualisiert werden, und die SELECT-Vorgänge entsprechen den SELECT *-Vorgängen für diese Minitabellen.Column sets can be visualized as a minitable and a select operation is like a SELECT * operation on this minitable. Bei der Beziehung zwischen Spaltensatz und Sparsespalten handelt es sich jedoch nicht um einen Container, sondern um eine Gruppenbeziehung.But, the relationship between column set to sparse columns is a grouping relationship instead of strictly a container. Das Sicherheitsmodell prüft die Sicherheit der Spaltensatz-Spalte, wobei die DENY-Vorgänge für die zugrunde liegenden Sparsespalten berücksichtigt werden.The security model checks the security on the column set column, and honors the DENY operations on the underlying sparse columns. Für das Sicherheitsmodell gelten die folgenden zusätzlichen Eigenschaften:Additional characteristics of the security model are as follows:

  • Wie bei anderen Spalten in der Tabelle können Sicherheitsberechtigungen für den Spaltensatz erteilt und aufgehoben werden.Security permissions can be granted and revoked from the column set column, similar to any other column in the table.

  • Der GRANT- bzw. REVOKE-Vorgang für SELECT-, INSERT-, UPDATE-, DELETE- und REFERENCES-Berechtigungen für einen Spaltensatz wirkt sich nicht auf die zugrunde liegenden Spalten aus.A GRANT or REVOKE of SELECT, INSERT, UPDATE, DELETE, and REFERENCES permission on a column set column does not propagate to the underlying member columns of that set. Dieser Vorgang gilt nur für die Verwendung der Spaltensatz-Spalte.It applies only to the usage of the column set column. Die DENY-Berechtigung für einen Spaltensatz gilt jedoch auch für die zugrunde liegenden Sparsespalten.DENY permission on a column set does propagate to the underlying sparse columns of the table.

  • Zur Ausführung von SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen für den Spaltensatz muss der Benutzer über die entsprechenden Berechtigungen für den Spaltensatz und über die entsprechenden Berechtigungen für alle Sparsespalten in der Tabelle verfügen.Executing SELECT, INSERT, UPDATE, and DELETE statements on the column set column require that the user has corresponding permissions on the column set column, and also the corresponding permission on all the sparse columns in the table. Da der Spaltensatz alle Sparsespalten in der Tabelle darstellt, müssen Sie über Berechtigungen für alle diese Spalten verfügen, einschließlich Spalten, die Sie nicht ändern.Because the column set represents all the sparse columns in the table, you must have permission on all the sparse columns, and this includes sparse columns that you might not be changing.

  • Durch die Ausführung einer REVOKE-Anweisung für eine Sparsespalte bzw. einen Spaltensatz wird die Sicherheitseinstellung auf die Einstellung des übergeordneten Objekts zurückgesetzt.Executing a REVOKE statement on a sparse column or column set defaults the security to their parent object.

BeispieleExamples

In den folgenden Beispielen enthält eine Dokumenttabelle die gemeinsamen Spalten DocID und Title.In the following examples, a document table contains the common set of columns DocID and Title. Die Produktionsgruppe möchte eine ProductionSpecification -Spalte und eine ProductionLocation -Spalte für alle Produktionsdokumente.The Production group wants a ProductionSpecification and ProductionLocation column for all production documents. Die Marketinggruppe möchte eine MarketingSurveyGroup -Spalte für Marketingdokumente.The Marketing group wants a MarketingSurveyGroup column for marketing documents.

A.A. Erstellen einer Tabelle mit einem SpaltensatzCreating a table that has a column set

Im folgenden Beispiel wird eine Tabelle erstellt, die Sparsespalten und den Spaltensatz SpecialPurposeColumns enthält.The following example creates the table that uses sparse columns and includes the column set SpecialPurposeColumns. Im Beispiel werden zwei Zeilen in die Tabelle eingefügt, und anschließend werden Daten aus der Tabelle ausgewählt.The example inserts two rows into the table, and then selects data from the table.

Hinweis

Diese Tabelle hat nur fünf Spalten, um die Anzeige und das Lesen zu erleichtern.This table has only five columns to make it easier to display and read.

USE AdventureWorks2012;  
GO  
  
CREATE TABLE DocumentStoreWithColumnSet  
    (DocID int PRIMARY KEY,  
     Title varchar(200) NOT NULL,  
     ProductionSpecification varchar(20) SPARSE NULL,  
     ProductionLocation smallint SPARSE NULL,  
     MarketingSurveyGroup varchar(20) SPARSE NULL,  
     MarketingProgramID int SPARSE NULL,  
     SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);  
GO  

B.B. Einfügen von Daten in eine Tabelle anhand der Namen der SparsespaltenInserting data to a table by using the names of the sparse columns

In den folgenden Beispielen werden zwei Zeilen in die in Beispiel A erstellte Tabelle eingefügt. Hierzu werden die Namen der Sparsespalten verwendet, und auf den Spaltensatz wird nicht verwiesen.The following examples insert two rows into the table that is created in example A. The examples use the names of the sparse columns and do not reference the column set.

INSERT DocumentStoreWithColumnSet (DocID, Title, ProductionSpecification, ProductionLocation)  
VALUES (1, 'Tire Spec 1', 'AXZZ217', 27);  
GO  
  
INSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup)  
VALUES (2, 'Survey 2142', 'Men 25 - 35');  
GO  

C.C. Einfügen von Daten in eine Tabelle anhand des SpaltensatznamensInserting data to a table by using the name of the column set

Im folgenden Beispiel wird eine dritte Zeile in die in Beispiel A erstellte Tabelle eingefügt. Diesmal werden die Namen der Sparsespalten nicht verwendet.The following example inserts a third row into the table that is created in example A. This time the names of the sparse columns are not used. Stattdessen wird der Name des Spaltensatzes verwendet, und der INSERT-Vorgang gibt die Werte für zwei der vier Sparsespalten im XML-Format zurück.Instead, the name of the column set is used, and the insert provides the values for two of the four sparse columns in XML format.

INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)  
VALUES (3, 'Tire Spec 2', '<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>');  
GO  

D:D. Prüfen der Ergebnisse eines Spaltensatzes bei Verwendung von SELECT *Observing the results of a column set when SELECT * is used

Im folgenden Beispiel werden alle Spalten der Tabelle ausgewählt, die einen Spaltensatz enthält.The following example selects all the columns from the table that contains a column set. Es wird eine XML-Spalte mit den kombinierten Werten der Sparsespalten zurückgegeben.It returns an XML column with the combined values of the sparse columns. Die Sparsespalten werden nicht einzeln zurückgegeben.It does not return the sparse columns individually.

SELECT DocID, Title, SpecialPurposeColumns FROM DocumentStoreWithColumnSet ;  

Hier ist das Resultset.Here is the result set.

DocID  Title        SpecialPurposeColumns  
1      Tire Spec 1  <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>  
2      Survey 2142  <MarketingSurveyGroup>Men 25 - 35</MarketingSurveyGroup>  
3      Tire Spec 2  <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation> 

E.E. Prüfen der Ergebnisse der Auswahl des Spaltensatzes nach NameObserving the results of selecting the column set by name

Da die Produktionsabteilung nicht an den Marketingdaten interessiert ist, wird in diesem Beispiel eine WHERE -Klausel zur Einschränkung der Ausgabe hinzugefügt.Because the Production department is not interested in the marketing data, this example adds a WHERE clause to restrict the output. In diesem Beispiel wird der Name des Spaltensatzes verwendet.The example uses the name of the column set.

SELECT DocID, Title, SpecialPurposeColumns  
FROM DocumentStoreWithColumnSet  
WHERE ProductionSpecification IS NOT NULL ;  

Hier ist das Resultset.Here is the result set.

DocID  Title        SpecialPurposeColumns  
1      Tire Spec 1  <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>  
3      Tire Spec 2  <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>  

F.F. Prüfen der Ergebnisse der Auswahl von Sparsespalten nach NameObserving the results of selecting sparse columns by name

Auch wenn eine Tabelle einen Spaltensatz enthält, können Sie eine Abfrage anhand der einzelnen Spaltennamen durchführen, wie im folgenden Beispiel gezeigt.When a table contains a column set, you can still query the table by using the individual column names as shown in the following example.

SELECT DocID, Title, ProductionSpecification, ProductionLocation   
FROM DocumentStoreWithColumnSet  
WHERE ProductionSpecification IS NOT NULL ;  

Hier ist das Resultset.Here is the result set.

DocID  Title        ProductionSpecification ProductionLocation`  
1      Tire Spec 1  AXZZ217                 27`  
3      Tire Spec 2  AXW9R411                38`  

G.G. Aktualisieren einer Tabelle mithilfe eines SpaltensatzesUpdating a table by using a column set

Im folgenden Beispiel wird der dritte Datensatz mit neuen Werten für beide Sparsespalten aktualisiert, die von der Zeile verwendet werden.The following example updates the third record with new values for both sparse columns that are used by that row.

UPDATE DocumentStoreWithColumnSet  
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification><ProductionLocation>38</ProductionLocation>'  
WHERE DocID = 3 ;  
GO  

Wichtig

Mit einer UPDATE-Anweisung, die einen Spaltensatz verwendet, werden alle Sparsespalten in der Tabelle aktualisiert.An UPDATE statement that uses a column set updates all the sparse columns in the table. Spalten mit geringer Dichte, auf die nicht verwiesen wird, werden auf NULL festgelegt.Sparse columns that are not referenced are updated to NULL.

Im folgenden Beispiel wird der dritte Datensatz aktualisiert, es wird jedoch nur der Wert für eine der beiden Spalten mit Werten angegeben.The following example updates the third record, but only specifies the value of one of the two populated columns. Die zweite Spalte ProductionLocation ist nicht in der UPDATE -Anweisung enthalten und wird auf NULL aktualisiert.The second column ProductionLocation is not included in the UPDATE statement and is updated to NULL.

UPDATE DocumentStoreWithColumnSet  
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification>'  
WHERE DocID = 3 ;  
GO  

Weitere InformationenSee Also

Verwenden von Spalten mit geringer DichteUse Sparse Columns