Verwenden von Spalten mit geringer DichteUse Sparse Columns

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 AnalyticsAnwendungsbereich: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

Spalten mit geringer Dichte sind gewöhnliche Spalten, die einen optimierten Speicher für NULL-Werte haben.Sparse columns are ordinary columns that have an optimized storage for null values. Spalten mit geringer Dichte reduzieren die Speicherplatzanforderungen von NULL-Werten auf Kosten eines erhöhten Aufwands, um Werte ungleich NULL abzurufen.Sparse columns reduce the space requirements for null values at the cost of more overhead to retrieve nonnull values. Verwenden Sie Sparsespalten, wenn dadurch mindestens 20 Prozent bis 40 Prozent Speicherplatz eingespart werden.Consider using sparse columns when the space saved is at least 20 percent to 40 percent. Spalten mit geringer Dichte und Spaltensätze werden mit der CREATE TABLE -Anweisung oder der ALTER TABLE -Anweisung definiert.Sparse columns and column sets are defined by using the CREATE TABLE or ALTER TABLE statements.

Spalten mit geringer Dichte können mit Spaltensätzen und gefilterten Indizes verwendet werden:Sparse columns can be used with column sets and filtered indexes:

  • SpaltensätzeColumn sets

    Die Anweisungen INSERT, UPDATE und DELETE können anhand des Namens auf die Sparsespalten verweisen.INSERT, UPDATE, and DELETE statements can reference the sparse columns by name. Sie können jedoch auch alle Sparsespalten in einer Tabelle anzeigen und mit ihnen arbeiten, wenn sie zu einer einzelnen XML-Spalte zusammengeschlossen werden.However, you can also view and work with all the sparse columns of a table that are combined into a single XML column. Diese Spalte wird als Spaltensatz bezeichnet.This column is called a column set. Weitere Informationen zu Spaltensätzen finden Sie unter Verwenden von Spaltensätzen.For more information about column sets, see Use Column Sets.

  • Gefilterte IndizesFiltered indexes

    Da Sparsespalten viele Zeilen mit NULL-Werten haben, sind sie besonders für gefilterte Indizes geeignet.Because sparse columns have many null-valued rows, they are especially appropriate for filtered indexes. Ein gefilterter Index für eine Sparsespalte kann nur die Zeilen indizieren, die Werte enthalten.A filtered index on a sparse column can index only the rows that have populated values. Dadurch wird ein kleinerer und effizienterer Index erstellt.This creates a smaller and more efficient index. Weitere Informationen finden Sie unter erstellen gefilterter Indizes.For more information, see Create Filtered Indexes.

Mithilfe von Spalten mit geringer Dichte und von gefilterten Indizes können Anwendungen wie Windows SharePoint ServicesWindows SharePoint Servicesgroße Mengen an benutzerdefinierten Eigenschaften mit SQL Server 2019 (15.x)SQL Server 2019 (15.x)speichern und darauf zugreifen.Sparse columns and filtered indexes enable applications, such as Windows SharePoint ServicesWindows SharePoint Services, to efficiently store and access a large number of user-defined properties by using SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Eigenschaften von Spalten mit geringer DichteProperties of Sparse Columns

Spalten mit geringer Dichte haben die folgenden Eigenschaften:Sparse columns have the following characteristics:

  • SQL Server-Datenbank-EngineSQL Server Database Engine verwendet das Schlüsselwort SPARSE in einer Spaltendefinition, um die Speicherung von Werten in dieser Spalte zu optimieren.The SQL Server-Datenbank-EngineSQL Server Database Engine uses the SPARSE keyword in a column definition to optimize the storage of values in that column. Wenn der Spaltenwert in einer Zeile der Tabelle NULL ist, belegen die Werte keinen Speicherplatz.Therefore, when the column value is NULL for any row in the table, the values require no storage.

  • Katalogsichten für eine Tabelle, die Sparsespalten aufweist, entsprechen denen einer typischen Tabelle.Catalog views for a table that has sparse columns are the same as for a typical table. Diese sys.columns-Katalogsicht enthält eine Zeile für jede Spalte in der Tabelle und einen Spaltensatz, wenn einer definiert wurde.The sys.columns catalog view contains a row for each column in the table and includes a column set if one is defined.

  • Spalten mit geringer Dichte sind eine Eigenschaft der Speicherebene und keine Eigenschaft der logischen Tabelle.Sparse columns are a property of the storage layer, rather than the logical table. Daher wird eine SELECT...INTO-Anweisung nicht über die Eigenschaft der Sparsespalte in eine neue Tabelle kopiert.Therefore a SELECT...INTO statement does not copy over the sparse column property into a new table.

  • Die COLUMNS_UPDATED-Funktion gibt einen varbinary -Wert zurück, mit dem alle Spalten, die während einer DML-Aktion aktualisiert wurden, gekennzeichnet werden.The COLUMNS_UPDATED function returns a varbinary value to indicate all the columns that were updated during a DML action. Die Bits, die von der COLUMNS_UPDATED-Funktion zurückgegeben werden, lauten folgendermaßen:The bits that are returned by the COLUMNS_UPDATED function are as follows:

    • Wenn eine Sparsespalte explizit aktualisiert wird, wird das entsprechende Bit für diese Sparsespalte auf 1 festgelegt, und das Bit für den Spaltensatz wird auf 1 festgelegt.When a sparse column is explicitly updated, the corresponding bit for that sparse column is set to 1, and the bit for the column set is set to 1.

    • Wenn ein Spaltensatz explizit aktualisiert wird, wird das Bit für den Spaltensatz auf 1 festgelegt, und die Bits für alle Sparsespalten in dieser Tabelle werden auf 1 festgelegt.When a column set is explicitly updated, the bit for the column set is set to 1, and the bits for all the sparse columns in that table are set to 1.

    • Für Einfügevorgänge werden alle Bits auf 1 festgelegt.For insert operations, all bits are set to 1.

    Weitere Informationen zu Spaltensätzen finden Sie unter Verwenden von Spaltensätzen.For more information about columns sets, see Use Column Sets.

Die folgenden Datentypen können nicht als SPARSE festgelegt werden:The following data types cannot be specified as SPARSE:

geographygeography texttext
geometrygeometry timestamptimestamp
imageimage Benutzerdefinierte Datentypenuser-defined data types
ntextntext

Geschätzte Speicherplatzeinsparungen nach DatentypEstimated Space Savings by Data Type

Spalten mit geringer Dichte benötigen mehr Speicherplatz für Werte, die ungleich NULL sind, als für identische Daten benötigt wird, die nicht als SPARSE gekennzeichnet wurden.Sparse columns require more storage space for nonnull values than the space required for identical data that is not marked SPARSE. Die folgenden Tabellen geben die Speicherplatznutzung für jeden Datentyp an.The following tables show the space usage for each data type. Die Spalte NULL-Prozentwert gibt an, wie viel Prozent der Daten NULL sein müssen, um Speicherplatzeinsparungen von 40 Prozent zu erzielen.The NULL Percentage column indicates what percent of the data must be NULL for a net space savings of 40 percent.

Datentypen fester LängeFixed-Length Data Types

DatentypData type Bytes ohne geringe DichteNonsparse bytes Bytes mit geringer DichteSparse bytes NULL-ProzentwertNULL percentage
bitbit 0,1250.125 55 98%98%
tinyinttinyint 11 55 86%86%
smallintsmallint 22 66 76 %76%
intint 44 88 64%64%
bigintbigint 88 1212 52 %52%
realreal 44 88 64%64%
floatfloat 88 1212 52 %52%
smallmoneysmallmoney 44 88 64%64%
moneymoney 88 1212 52 %52%
smalldatetimesmalldatetime 44 88 64%64%
datetimedatetime 88 1212 52 %52%
uniqueidentifieruniqueidentifier 1616 2020 43%43%
datedate 33 77 69%69%

Datentypen mit von der Genauigkeit abhängiger LängePrecision-Dependent-Length Data Types

DatentypData type Bytes ohne geringe DichteNonsparse bytes Bytes mit geringer DichteSparse bytes NULL-ProzentwertNULL percentage
datetime2(0)datetime2(0) 66 1010 57%57%
datetime2(7)datetime2(7) 88 1212 52 %52%
time(0)time(0) 33 77 69%69%
time(7)time(7) 55 99 60%60%
datetimetoffset(0)datetimetoffset(0) 88 1212 52 %52%
datetimetoffset(7)datetimetoffset (7) 1010 1414 49%49%
decimal/numeric(1,s)decimal/numeric(1,s) 55 99 60%60%
decimal/numeric(38,s)decimal/numeric(38,s) 1717 2121 42%42%
vardecimal(p,s)vardecimal(p,s) Verwenden Sie den decimal -Typ als konservative Schätzung.Use the decimal type as a conservative estimate.

Datentypen mit von den Daten abhängiger LängeData-Dependent-Length Data Types

DatentypData type Bytes ohne geringe DichteNonsparse bytes Bytes mit geringer DichteSparse bytes NULL-ProzentwertNULL percentage
sql_variantsql_variant Ändert sich mit dem zugrunde liegenden DatentypVaries with the underlying data type
varchar oder charvarchar or char 2*2* 4*4* 60%60%
nvarchar oder ncharnvarchar or nchar 2*2* 4*+4*+ 60%60%
varbinary oder binaryvarbinary or binary 2*2* 4*4* 60%60%
xmlxml 2*2* 4*4* 60%60%
hierarchyidhierarchyid 2*2* 4*4* 60%60%

*Die Länge ist gleich dem Mittelwert der im Typ enthaltenen Daten, plus 2 oder 4 Bytes.*The length is equal to the average of the data that is contained in the type, plus 2 or 4 bytes.

Mehr Verarbeitungsaufwand im Arbeitsspeicher bei Aktualisierung von Spalten mit geringer DichteIn-Memory Overhead Required for Updates to Sparse Columns

Beachten Sie beim Entwerfen von Tabellen mit Sparsespalten, dass beim Aktualisieren von Zeilen für jede Sparsespalte in der Tabelle, die nicht NULL ist, 2 zusätzliche Bytes Verarbeitungsaufwand entstehen.When designing tables with sparse columns, keep in mind that an additional 2 bytes of overhead are required for each non-null sparse column in the table when a row is being updated. Aufgrund dieses zusätzlichen Speicherbedarfs kann bei Aktualisierungen Fehler 576 auftreten, wenn die Gesamtzeilengröße, einschließlich dieser Vergrößerung im Arbeitsspeicher, 8019 überschreitet und keine Spalten aus der Zeile geschoben werden können.As a result of this additional memory requirement, updates can fail unexpectedly with error 576 when the total row size, including this memory overhead, exceeds 8019, and no columns can be pushed off the row.

Angenommen, eine Tabelle enthält 600 Sparsespalten des Typs bigint.Consider the example of a table that has 600 sparse columns of type bigint. Wenn davon 571 Spalten nicht NULL sind, beträgt die Gesamtgröße auf dem Datenträger 571 * 12 = 6852 Bytes.If there are 571 non-null columns, then the total size on disk is 571 * 12 = 6852 bytes. Nachdem die zusätzliche Zeilengröße und der Header für Sparsespalten hinzugefügt wurden, erhöht sich dies auf etwa 6895 Bytes.After including additional row overhead and the sparse column header, this increases to around 6895 bytes. Für die Seite sind immer noch etwa 1124 Bytes auf dem Datenträger verfügbar.The page still has around 1124 bytes available on disk. Dadurch kann der Eindruck entstehen, dass zusätzliche Spalten erfolgreich aktualisiert werden können.This can give the impression that additional columns can be updated successfully. Während der Aktualisierung entsteht im Arbeitsspeicher ein zusätzlicher Verarbeitungsaufwand von 2*(Anzahl der Sparsespalten, die nicht NULL sind).However, during the update, there is additional overhead in memory which is 2*(number of non-null sparse columns). In diesem Beispiel erhöht der zusätzliche Verarbeitungsaufwand (2 * 571 = 1.142 Bytes) die Zeilengröße auf dem Datenträger auf etwa 8.037 Bytes.In this example, including the additional overhead - 2 * 571 = 1142 bytes - increases the row size on disk to around 8037 bytes. Diese Größe überschreitet die maximal zulässige Größe von 8019 Bytes.This size exceeds the maximum allowed size of 8019 bytes. Da alle Spalten Datentypen fester Länge aufweisen, können sie nicht von der Zeile geschoben werden.Since all the columns are fixed-length data types, they cannot be pushed off the row. Als Ergebnis tritt beim Aktualisieren der Fehler 576 auf.As a result, the update fails with the 576 error.

Einschränkungen für die Verwendung von Spalten mit geringer DichteRestrictions for Using Sparse Columns

Spalten mit geringer Dichte können jeden SQL ServerSQL Server -Datentyp annehmen und verhalten sich mit den folgenden Einschränkungen wie andere Spalten:Sparse columns can be of any SQL ServerSQL Server data type and behave like any other column with the following restrictions:

  • Eine Sparsespalte muss auf NULL festlegbar sein und darf nicht über die ROWGUIDCOL-Eigenschaft oder die IDENTITY-Eigenschaft verfügen.A sparse column must be nullable and cannot have the ROWGUIDCOL or IDENTITY properties. Eine Sparsespalte darf nicht die folgenden Datentypen annehmen: text, ntext, image, timestamp, benutzerdefinierter Datentyp, geometryoder geography; sie darf auch nicht über das FILESTREAM-Attribut verfügen.A sparse column cannot be of the following data types: text, ntext, image, timestamp, user-defined data type, geometry, or geography; or have the FILESTREAM attribute.

  • Eine Sparsespalte kann keinen Standardwert haben.A sparse column cannot have a default value.

  • Eine Sparsespalte kann nicht an eine Regel gebunden sein.A sparse column cannot be bound to a rule.

  • Obwohl eine berechnete Spalte eine Sparsespalte enthalten kann, kann eine berechnete Spalte nicht als SPARSE markiert werden.Although a computed column can contain a sparse column, a computed column cannot be marked as SPARSE.

  • Eine Datenmaske kann für eine Sparsespalte definiert werden, jedoch nicht für eine Sparsespalte, die Teil eines Spaltensatzes ist.A data mask can be defined on a sparse column, but not on a sparse column that is part of a column set.

  • Eine Sparsespalte kann nicht Teil eines gruppierten Indexes oder eines eindeutigen Primärschlüsselindexes sein.A sparse column cannot be part of a clustered index or a unique primary key index. Sowohl persistente als auch nicht persistente berechnete Spalten, die für Sparsespalten definiert wurden, können Teil eines gruppierten Schlüssels sein.However, both persisted and nonpersisted computed columns that are defined on sparse columns can be part of a clustered key.

  • Eine Sparsespalte kann nicht als Partitionsschlüssel eines gruppierten Indexes oder eines Heaps verwendet werden.A sparse column cannot be used as a partition key of a clustered index or heap. Eine Sparsespalte kann jedoch als Partitionsschlüssel eines nicht gruppierten Indexes verwendet werden.However, a sparse column can be used as the partition key of a nonclustered index.

  • Eine Sparsespalte kann nicht Teil eines benutzerdefinierten Tabellentyps sein, der in Tabellenvariablen und Tabellenwertparametern verwendet wird.A sparse column cannot be part of a user-defined table type, which are used in table variables and table-valued parameters.

  • Spalten mit geringer Dichte sind inkompatibel mit der Datenkomprimierung.Sparse columns are incompatible with data compression. Daher ist es nicht möglich, Sparsespalten komprimierten Tabellen hinzuzufügen, und Tabellen mit Sparsespalten können nicht komprimiert werden.Therefore sparse columns cannot be added to compressed tables, nor can any tables containing sparse columns be compressed.

  • Um eine Spalte mit geringer Dichte in eine ohne geringe Dichte zu ändern oder um eine Spalte ohne geringe Dichte in eine mit geringer Dichte zu ändern, muss das Speicherformat der Spalte geändert werden.Changing a column from sparse to nonsparse or nonsparse to sparse requires changing the storage format of the column. Die SQL Server-Datenbank-Engine verwendet die folgende Prozedur, um diese Änderung auszuführen:The SQL Server Database Engine uses the following procedure to accomplish this change:

    1. Fügt der Tabelle eine neue Spalte in der neuen Speichergröße und dem neuen Format hinzu.Adds a new column to the table in the new storage size and format.

    2. Der in der alten Spalte gespeicherte Wert wird für jede Zeile in der Tabelle in die neue Spalte aktualisiert und kopiert.For each row in the table, updates and copies the value stored in the old column to the new column.

    3. Entfernt die alte Spalte aus dem Tabellenschema.Removes the old column from the table schema.

    4. Erstellt die Tabelle neu (wenn es keinen gruppierten Index gibt) oder erstellt den gruppierten Index neu, um den von der alten Spalte verwendeten Speicherplatz freizugeben.Rebuilds the table (if there is no clustered index) or rebuilds the clustered index to reclaim space used by the old column.

    Hinweis

    Schritt 2 kann fehlschlagen, wenn die Größe der Daten in der Zeile die maximal zulässige Zeilengröße überschreitet.Step 2 can fail when the size of the data in the row exceeds the maximum allowable row size. Diese Größe enthält die Größe der in der alten Spalte gespeicherten Daten und der in der neuen Spalte gespeicherten aktualisierten Daten.This size includes the size of the data stored in the old column and the updated data stored in the new column. Diese Grenze beträgt 8060 Bytes für Tabellen, die keine Sparsespalten enthalten, oder 8018 Bytes für Tabellen, die Sparsespalten enthalten.This limit is 8060 bytes for tables that do not contain any sparse columns or 8018 bytes for tables that contain sparse columns. Dieser Fehler kann auftreten, auch wenn alle in Frage kommenden Spalten aus den Zeilen verschoben wurden.This error can occur even if all eligible columns have been pushed off-row.

  • Wenn Sie eine Nicht-Sparsespalte in eine Sparsespalte ändern, belegt die Sparsespalte mehr Speicherplatz für Werte ungleich NULL.When you change a non-sparse column to a sparse column, the sparse column will consume more space for non-null values. Wenn eine Zeile die maximale Zeilengrößenbeschränkung fast erreicht hat, kann der Vorgang fehlschlagen.When a row is close to the maximum row size limit, the operation can fail.

SQL Server-Technologien, die Spalten mit geringer Dichte unterstützenSQL Server Technologies That Support Sparse Columns

In diesem Abschnitt wird beschrieben, wie Sparsespalten in den folgenden SQL ServerSQL Server -Technologien unterstützt werden:This section describes how sparse columns are supported in the following SQL ServerSQL Server technologies:

  • TransaktionsreplikationTransactional replication

    Transaktionsreplikation unterstützt die Sparsespalten. Spaltensätze, die zusammen mit Sparsespalten verwendet werden können, werden jedoch nicht unterstützt.Transactional replication supports sparse columns, but it does not support column sets, which can be used with sparse columns. Weitere Informationen zu Spaltensätzen finden Sie unter Verwenden von Spaltensätzen.For more information about column sets, see Use Column Sets.

    Die Replikation des SPARSE-Attributs wird durch eine Schemaoption bestimmt, die mit sp_addarticle oder über das Dialogfeld Artikeleigenschaften in SQL Server Management StudioSQL Server Management Studiofestgelegt wird.The replication of the SPARSE attribute is determined by a schema option that is specified by using sp_addarticle or by using the Article Properties dialog box in SQL Server Management StudioSQL Server Management Studio. Frühere Versionen von SQL ServerSQL Server unterstützen keine Sparsespalten.Earlier versions of SQL ServerSQL Server do not support sparse columns. Wenn Sie Daten für eine frühere Version replizieren müssen, legen Sie fest, dass das SPARSE-Attribut nicht repliziert werden sollte.If you must replicate data to an earlier version, specify that the SPARSE attribute should not be replicated.

    Veröffentlichten Tabellen können Sie keine neuen Sparsespalten hinzufügen; Sie können auch nicht die SPARSE-Eigenschaft einer vorhandenen Spalte ändern.For tables that are published, you cannot add any new sparse columns to a table or change the sparse property of an existing column. Wenn ein solcher Vorgang erforderlich ist, löschen Sie die Veröffentlichung, und erstellen Sie sie erneut.If such an operation is required, drop and re-create the publication.

  • MergereplikationMerge replication

    Mergereplikation unterstützt keine Sparsespalten und keine Spaltensätze.Merge replication does not support sparse columns or column sets.

  • ÄnderungsnachverfolgungChange tracking

    Änderungsnachverfolgung unterstützt Sparsespalten und Spaltensätze.Change tracking supports sparse columns and column sets. Wenn ein Spaltensatz in einer Tabelle aktualisiert wird, behandelt die Änderungsnachverfolgung diese als Update für die gesamte Zeile.When a column set is updated in a table, change tracking treats this as an update to the whole row. Es steht keine detaillierte Änderungsnachverfolgung zur Verfügung, um den exakten Satz an Sparsespalten abzurufen, die über den Spaltensatz-Updatevorgang aktualisiert werden.No detailed change tracking is provided to obtain the exact set of sparse columns that are updated through the column set update operation. Wenn die Sparsespalten explizit über eine DML-Anweisung aktualisiert werden, arbeitet die Änderungsnachverfolgung wie gewohnt und identifiziert den exakten Satz an geänderten Spalten.If the sparse columns are updated explicitly through a DML statement, change tracking on them will work ordinarily and can identify the exact set of changed columns.

  • Erfassung geänderter DatenChange data capture

    Change Data Capture unterstützt Sparsespalten, aber keine Spaltensätze.Change data capture supports sparse columns, but it does not support column sets.

  • Die SPARSE-Eigenschaft einer Spalte wird beim Kopieren der Tabelle nicht beibehalten.The sparse property of a column is not preserved when the table is copied.

BeispieleExamples

In diesem Beispiel enthält eine Dokumenttabelle einen allgemeinen Satz mit der DocID -Spalte und der Title-Spalte.In this example, a document table contains a common set that has the 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. Mit dem Code in diesem Beispiel wird eine Tabelle ausgegeben, in der Sparsespalten verwendet werden. Es werden Zeilen in die Tabelle eingefügt und Daten aus der Tabelle ausgewählt.The code in this example creates a table that uses sparse columns, 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. Sie können optional die Sparsespalten so deklarieren, dass NULL-Werte zulässig sind, wenn die ANSI_NULL_DFLT_ON-Option festgelegt wurde.Declaring the sparse columns to be nullable is optional if the ANSI_NULL_DFLT_ON option is set.

USE AdventureWorks2012;  
GO  
  
CREATE TABLE DocumentStore  
    (DocID int PRIMARY KEY,  
     Title varchar(200) NOT NULL,  
     ProductionSpecification varchar(20) SPARSE NULL,  
     ProductionLocation smallint SPARSE NULL,  
     MarketingSurveyGroup varchar(20) SPARSE NULL ) ;  
GO  
  
INSERT DocumentStore(DocID, Title, ProductionSpecification, ProductionLocation)  
VALUES (1, 'Tire Spec 1', 'AXZZ217', 27);  
GO  
  
INSERT DocumentStore(DocID, Title, MarketingSurveyGroup)  
VALUES (2, 'Survey 2142', 'Men 25 - 35');  
GO  

Wenn Sie alle Spalten in der Tabelle auswählen, wird ein herkömmlicher Ergebnissatz zurückgegeben.To select all the columns from the table returns an ordinary result set.

SELECT * FROM DocumentStore ;  

Hier ist das Resultset.Here is the result set.

DocID Title ProductionSpecification ProductionLocation MarketingSurveyGroup

1 Tire Spec 1 AXZZ217 27 NULL

2 Survey 2142 NULL NULL Men 25-35

Da die Produktionsabteilung nicht an den Marketingdaten interessiert ist, möchte sie eine Spaltenliste verwenden, die nur die für sie wichtigen Spalten zurückgibt, wie in der folgenden Abfrage gezeigt.Because the Production department is not interested in the marketing data, they want to use a column list that returns only columns of interest, as shown in the following query.

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

Hier ist das Resultset.Here is the result set.

DocID Title ProductionSpecification ProductionLocation

1 Tire Spec 1 AXZZ217 27

Weitere InformationenSee Also

Verwenden von Spaltensätzen Use Column Sets
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
sys.columns (Transact-SQL)sys.columns (Transact-SQL)