ALTER TABLE column_definition (Transact-SQL)ALTER TABLE column_definition (Transact-SQL)

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Gibt die Eigenschaften einer Spalte an, die mithilfe von ALTER TABLE einer Tabelle hinzugefügt wird.Specifies the properties of a column that are added to a table by using ALTER TABLE.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

column_name <data_type>  
[ FILESTREAM ]  
[ COLLATE collation_name ]   
[ NULL | NOT NULL ]  
[   
    [ CONSTRAINT constraint_name ] DEFAULT constant_expression [ WITH VALUES ]   
    | IDENTITY [ ( seed , increment ) ] [ NOT FOR REPLICATION ]   
]  
[ ROWGUIDCOL ]   
[ SPARSE ]   
[ ENCRYPTED WITH  
  ( COLUMN_ENCRYPTION_KEY = key_name ,  
      ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED } ,   
      ALGORITHM =  'AEAD_AES_256_CBC_HMAC_SHA_256'   
  ) ]  
[ MASKED WITH ( FUNCTION = ' mask_function ') ]  
[ <column_constraint> [ ...n ] ]  
  
<data type> ::=   
[ type_schema_name . ] type_name   
    [ ( precision [ , scale ] | max |   
        [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]   
  
<column_constraint> ::=   
[ CONSTRAINT constraint_name ]   
{     { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        [   
            WITH FILLFACTOR = fillfactor    
          | WITH ( < index_option > [ , ...n ] )   
        ]   
        [ ON { partition_scheme_name ( partition_column_name )   
            | filegroup | "default" } ]  
  | [ FOREIGN KEY ]   
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
  | CHECK [ NOT FOR REPLICATION ] ( logical_expression )   
}  

ArgumenteArguments

column_namecolumn_name
Der Name der Spalte, die geändert, hinzugefügt oder gelöscht werden soll.Is the name of the column to be altered, added, or dropped. column_name kann zwischen 1 und 128 Zeichen aufweisen.column_name can consist of 1 through 128 characters. Bei neuen Spalten, die mit einem timestamp-Datentyp erstellt wurden, ist column_name nicht erforderlich.For new columns, created with a timestamp data type, column_name can be omitted. Wenn column_name nicht für eine Spalte vom Datentyp timestamp angegeben ist, wird der Name timestamp verwendet.If no column_name is specified for a timestamp data type column, the name timestamp is used.

[ type_schema_name .[ type_schema_name. ] type_name] type_name
Der Datentyp für die hinzugefügte Spalte und das Schema, zu dem er gehört.Is the data type for the column that is added and the schema to which it belongs.

type_name kann Folgendes sein:type_name can be:

  • Ein MicrosoftMicrosoftSQL ServerSQL Server-Systemdatentyp.A MicrosoftMicrosoftSQL ServerSQL Server system data type.

  • Ein Aliasdatentyp, der auf einem SQL ServerSQL Server-Systemdatentyp basiert.An alias data type based on a SQL ServerSQL Server system data type. Aliasdatentypen müssen mithilfe von CREATE TYPE erstellt werden, damit sie in einer Tabellendefinition verwendet werden können.Alias data types must be created by using CREATE TYPE before they can be used in a table definition.

  • Ein benutzerdefinierter MicrosoftMicrosoft .NET Framework.NET Framework-Datentyp und das Schema, zu dem er gehört.A MicrosoftMicrosoft .NET Framework.NET Framework user-defined type and the schema to which it belongs. Ein benutzerdefinierter .NET Framework.NET Framework-Datentyp muss mithilfe von CREATE TYPE erstellt werden, bevor er in einer Tabellendefinition verwendet werden kann.A .NET Framework.NET Framework user-defined type must be created by using CREATE TYPE before it can be used in a table definition.

Wenn type_schema_name nicht angegeben ist, verweist MicrosoftMicrosoft Datenbank-EngineDatabase Engine auf type_name in der folgenden Reihenfolge:If type_schema_name is not specified, the MicrosoftMicrosoft Datenbank-EngineDatabase Engine references type_name in the following order:

  • SQL ServerSQL Server-Systemdatentyp.The SQL ServerSQL Server system data type.

  • Das Standardschema des aktuellen Benutzers in der aktuellen DatenbankThe default schema of the current user in the current database.

  • Das dbo -Schema in der aktuellen DatenbankThe dbo schema in the current database.

precisionprecision
Die Genauigkeit für den angegebenen Datentyp.Is the precision for the specified data type. Weitere Informationen über gültige Genauigkeitswerte finden Sie unter Genauigkeit, Dezimalstellen und Länge (Transact-SQL).For more information about valid precision values, see Precision, Scale, and Length (Transact-SQL).

scalescale
Die Dezimalstellen für den angegebenen Datentyp.Is the scale for the specified data type. Weitere Informationen zu gültigen Dezimalstellenwerten finden Sie unter Genauigkeit, Dezimalstellen und Länge (Transact-SQL).For more information about valid scale values, see Precision, Scale, and Length (Transact-SQL).

maxmax
Gilt nur für die Datentypen varchar, nvarchar und varbinary.Applies only to the varchar, nvarchar, and varbinary data types. Diese Datentypen werden zum Speichern von Zeichen- und Binärdaten mit einer Länge von 2^31 Byte und Unicode-Daten mit einer Länge von 2^30 Byte verwendet.These are used for storing 2^31 bytes of character and binary data, and 2^30 bytes of Unicode data.

CONTENTCONTENT
Gibt an, dass jede Instanz des xml-Datentyps in column_name mehrere allgemeine Elemente enthalten kann.Specifies that each instance of the xml data type in column_name can comprise multiple top-level elements. CONTENT gilt nur für den xml-Datentyp und kann nur angegeben werden, wenn xml_schema_collection ebenfalls angegeben ist.CONTENT applies only to the xml data type and can be specified only if xml_schema_collection is also specified. Fehlt die Angabe, ist CONTENT das Standardverhalten.If this is not specified, CONTENT is the default behavior.

DOCUMENTDOCUMENT
Gibt an, dass jede Instanz des xml-Datentyps in column_name nur ein allgemeines Element enthalten kann.Specifies that each instance of the xml data type in column_name can comprise only one top-level element. DOCUMENT gilt nur für den xml-Datentyp und kann nur angegeben werden, wenn xml_schema_collection ebenfalls angegeben ist.DOCUMENT applies only to the xml data type and can be specified only if xml_schema_collection is also specified.

xml_schema_collectionxml_schema_collection
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Gilt nur für den xml-Datentyp zum Verknüpfen einer XML-Schemaauflistung mit diesem Typ.Applies only to the xml data type for associating an XML schema collection with the type. Vor der Typisierung einer xml-Spalte mit einem Schema muss das Schema zuerst mithilfe von CREATE XML SCHEMA COLLECTION in der Datenbank erstellt werden.Before typing an xml column to a schema, the schema must first be created in the database by using CREATE XML SCHEMA COLLECTION.

FILESTREAMFILESTREAM
Gibt optional das FILESTREAM-Speicherattribut für eine Spalte an, die einen type_name mit dem Wert varbinary(max) hat.Optionally specifies the FILESTREAM storage attribute for column that has a type_name of varbinary(max).

Wenn FILESTREAM für eine Spalte angegeben wird, muss die Tabelle auch eine Spalte mit dem Datentyp uniqueidentifier aufweisen, der das ROWGUIDCOL-Attribut enthält.When FILESTREAM is specified for a column, the table must also have a column of the uniqueidentifier data type that has the ROWGUIDCOL attribute. Diese Spalte darf keine NULL-Werte zulassen und muss eine UNIQUE- oder eine PRIMARY KEY-Einschränkung für einzelne Spalten enthalten.This column must not allow null values and must have either a UNIQUE or PRIMARY KEY single-column constraint. Der GUID-Wert für die Spalte muss entweder beim Einfügen von Daten von einer Anwendung oder durch eine DEFAULT-Einschränkung mit der NEWID ()-Funktion bereitgestellt werden.The GUID value for the column must be supplied either by an application when data is being inserted, or by a DEFAULT constraint that uses the NEWID () function.

Die Spalte ROWGUIDCOL kann nicht gelöscht, und die zugehörigen Einschränkungen können nicht geändert werden, wenn für die Tabelle eine FILESTREAM-Spalte definiert ist.The ROWGUIDCOL column cannot be dropped and the related constraints cannot be changed while there is a FILESTREAM column defined for the table. Die Spalte ROWGUIDCOL kann nur gelöscht werden, nachdem die letzte FILESTREAM-Spalte gelöscht wurde.The ROWGUIDCOL column can be dropped only after the last FILESTREAM column is dropped.

Wenn das FILESTREAM-Speicherattribut für eine Spalte angegeben wird, werden alle Werte dieser Spalte in einem FILESTREAM-Datencontainer des Dateisystems gespeichert.When the FILESTREAM storage attribute is specified for a column, all values for that column are stored in a FILESTREAM data container on the file system.

Ein Beispiel, das die Verwendung von Spaltendefinitionen veranschaulicht, finden Sie unter FILESTREAM (SQL Server).For an example that shows how to use column definition, see FILESTREAM (SQL Server).

COLLATE collation_nameCOLLATE collation_name
Gibt die Sortierung der Spalte an.Specifies the collation of the column. Wenn keine Sortierung angegeben ist, wird der Spalte die Standardsortierung der Datenbank zugewiesen.If not specified, the column is assigned the default collation of the database. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden.Collation name can be either a Windows collation name or an SQL collation name. Eine Liste und weitere Informationen finden Sie unter Name der Windows-Sortierung (Transact-SQL) und SQL Server-Sortierungsname (Transact-SQL).For a list and more information, see Windows Collation Name (Transact-SQL) and SQL Server Collation Name (Transact-SQL).

Mit der COLLATE-Klausel können Sie nur die Sortierungen von Spalten der Datentypen char, varchar, nchar und nvarchar angeben.The COLLATE clause can be used to specify the collations only of columns of the char, varchar, nchar, and nvarchar data types.

Weitere Informationen zur COLLATE-Klausel finden Sie unter COLLATE (Transact-SQL).For more information about the COLLATE clause, see COLLATE (Transact-SQL).

NULL | NOT NULLNULL | NOT NULL
Bestimmt, ob Nullwerte in der Spalte zulässig sind.Determines whether null values are allowed in the column. NULL ist genau genommen keine Einschränkung, kann jedoch wie NOT NULL verwendet werden.NULL is not strictly a constraint but can be specified just like NOT NULL.

[ CONSTRAINT constraint_name ][ CONSTRAINT constraint_name ]
Gibt den Anfang einer DEFAULT-Wertdefinition an.Specifies the start of a DEFAULT value definition. Um die Kompatibilität mit früheren Versionen von SQL ServerSQL Server aufrechtzuerhalten, ist es möglich, einer DEFAULT-Definition einen Einschränkungsnamen zuzuweisen.To maintain compatibility with earlier versions of SQL ServerSQL Server, a constraint name can be assigned to a DEFAULT. contraint_name muss den Regeln für Bezeichner entsprechen, wobei der Name außerdem nicht mit einem Nummernzeichen (#) beginnen darf.constraint_name must follow the rules for identifiers, except that the name cannot start with a number sign (#). Wenn contraint_name nicht angegeben wird, wird der DEFAULT-Definition ein vom System generierter Name zugewiesen.If constraint_name is not specified, a system-generated name is assigned to the DEFAULT definition.

DEFAULTDEFAULT
Ein Schlüsselwort, das den Standardwert für die Spalte angibt.Is a keyword that specifies the default value for the column. DEFAULT-Definitionen können verwendet werden, um Werte für eine neue Spalte in den vorhandenen Datenzeilen bereitzustellen.DEFAULT definitions can be used to provide values for a new column in the existing rows of data. DEFAULT-Definitionen können nicht auf timestamp-Spalten oder Spalten mit einer IDENTITY-Eigenschaft angewendet werden.DEFAULT definitions cannot be applied to timestamp columns, or columns with an IDENTITY property. Wenn ein Standardwert für einen benutzerdefinierten Spaltentyp angegeben wird, muss dieser Typ eine implizite Konvertierung von constant_expression in den benutzerdefinierten Typ unterstützen.If a default value is specified for a user-defined type column, the type must support an implicit conversion from constant_expression to the user-defined type.

constant_expressionconstant_expression
Ein Literalwert, ein NULL-Wert oder eine Systemfunktion, der bzw. die als Standardwert für die Spalte verwendet wird.Is a literal value, a NULL, or a system function used as the default column value. Wenn die Implementierung des Datentyps zusammen mit einer Spalte verwendet wird, die als benutzerdefinierter Datentyp von .NET Framework.NET Framework definiert ist, muss die Implementierung des Datentyps sie eine implizite Konvertierung von constant_expression in den benutzerdefinierten Datentyp unterstützen.If used in conjunction with a column defined to be of a .NET Framework.NET Framework user-defined type, the implementation of the type must support an implicit conversion from the constant_expression to the user-defined type.

WITH VALUESWITH VALUES
Beim Hinzufügen einer Spalte UND einer DEFAULT-Beschränkung wird, wenn die Spalte NULL-Werte mit WITH VALUES erlaubt, für bestehende Zeilen der Wert der neuen Spalte auf den in DEFAULT constant_expression angegebenen Wert gesetzt.When adding a column AND a DEFAULT constraint, if the column allows NULLS using WITH VALUES will, for existing rows, set the new column's value to the value given in DEFAULT constant_expression. Wenn die hinzugefügte Spalte NULL-Werte nicht zulässt, wird der Wert der Spalte immer auf den im DEFAULT constant expression angegebenen Wert gesetzt.If the column being added does not allow NULLS, for existing rows, the column's value will always be set to the value given in the DEFAULT constant expression. Ab SQL Server 2012 kann dies auch ein Metadatenvorgang sein Hinzufügen von NOT NULL-Spalten als Onlinevorgang.Starting in SQL Server 2012 this may be a meta data operation adding-not-null-columns-as-an-online-operation. Wenn dieser verwendet wird, hat dies keine Auswirkung wenn die verknüpfte Spalte ist nicht ebenfalls hinzugefügt wird.If this is used when the related column isn't also being added then it has no effect.

Gibt an, dass der in DEFAULT constant_expression angegebene Wert in einer neuen Spalte gespeichert wird, die vorhandenen Zeilen hinzugefügt wird.Specifies that the value given in DEFAULT constant_expression is stored in a new column that is added to existing rows. Wenn die hinzugefügte Spalte NULL-Werte zulässt und WITH VALUES angegeben ist, wird der Standardwert in der neuen, zu vorhandenen Zeilen hinzugefügten Spalte gespeichert.If the added column allows null values and WITH VALUES is specified, the default value is stored in the new column that is added to existing rows. Ist WITH VALUES für Spalten, die NULL-Werte zulassen, nicht angegeben, wird der Wert NULL in der neuen Spalte in vorhandenen Zeilen gespeichert.If WITH VALUES is not specified for columns that allow nulls, the value NULL is stored in the new column, in existing rows. Wenn die neue Spalte keine NULL-Werte zulässt, wird der Standardwert in neuen Zeilen gespeichert, unabhängig davon, ob WITH VALUES angegeben ist.If the new column does not allow nulls, the default value is stored in new rows regardless of whether WITH VALUES is specified.

IDENTITYIDENTITY
Gibt an, dass es sich bei der neuen Spalte um eine Identitätsspalte handelt.Specifies that the new column is an identity column. Von SQL Server-Datenbank-EngineSQL Server Database Engine wird ein eindeutiger, inkrementeller Wert für die Spalte bereitgestellt.The SQL Server-Datenbank-EngineSQL Server Database Engine provides a unique, incremental value for the column. Wenn Sie vorhandenen Tabellen Bezeichnerspalten hinzufügen, werden die ID-Nummern mit den Ausgangswerten und den inkrementellen Werten den vorhandenen Zeilen der Tabelle hinzugefügt.When you add identifier columns to existing tables, the identity numbers are added to the existing rows of the table with the seed and increment values. Die Reihenfolge, in der die Zeilen aktualisiert werden, ist nicht sichergestellt.The order in which the rows are updated is not guaranteed. Auch für alle neu hinzugefügten Zeilen werden ID-Nummern generiert.Identity numbers are also generated for any new rows that are added.

Identitätsspalten werden in der Regel in Verbindung mit PRIMARY KEY-Einschränkungen verwendet, um als eindeutiger Zeilenbezeichner für die Tabelle zu dienen.Identity columns are commonly used in conjunction with PRIMARY KEY constraints to serve as the unique row identifier for the table. Die IDENTITY-Eigenschaft kann folgenden Spalten zugewiesen werden: tinyint, smallint, int, bigint, decimal(p,0) oder numeric(p,0) .The IDENTITY property can be assigned to a tinyint, smallint, int, bigint, decimal(p,0), or numeric(p,0) column. Es kann nur eine Identitätsspalte pro Tabelle erstellt werden.Only one identity column can be created per table. Das DEFAULT-Schlüsselwort und gebundene Standardwerte können bei einer Identitätsspalte nicht verwendet werden.The DEFAULT keyword and bound defaults cannot be used with an identity column. Entweder müssen sowohl Ausgangswert als auch Inkrement oder keines von beiden angegeben werden.Either both the seed and increment must be specified, or neither. Wenn keine Angabe gemacht wird, ist der Standardwert (1,1).If neither are specified, the default is (1,1).

Hinweis

Es ist nicht möglich, einer vorhandenen Tabellenspalte die IDENTITY-Eigenschaft hinzuzufügen.You cannot modify an existing table column to add the IDENTITY property.

Das Hinzufügen einer Identitätsspalte zu einer veröffentlichten Spalte wird nicht unterstützt, da dies beim Replizieren der Spalte auf den Abonnenten zu einer Nichtkonvergenz führen kann.Adding an identity column to a published table is not supported because it can result in nonconvergence when the column is replicated to the Subscriber. Die Werte in der Identitätsspalte auf dem Verleger richten sich nach der Ordnung, in der die Zeilen für die betreffende Tabelle physisch gespeichert sind.The values in the identity column at the Publisher depend on the order in which the rows for the affected table are physically stored. Die Zeilen sind auf dem Abonnenten möglicherweise anders gespeichert, sodass der Wert für die Identitätsspalte für dieselben Zeilen variieren kann.The rows might be stored differently at the Subscriber; therefore, the value for the identity column can be different for the same rows..

Verwenden Sie SET IDENTITY_INSERT, um die IDENTITY-Eigenschaft einer Spalte zu deaktivieren, indem das Einfügen expliziter Werte ermöglicht wird.To disable the IDENTITY property of a column by allowing values to be explicitly inserted, use SET IDENTITY_INSERT.

seedseed
Der Wert, der für die erste in die Tabelle geladene Zeile verwendet wird.Is the value used for the first row loaded into the table.

incrementincrement
Der Inkrementwert, der zum Identitätswert der zuvor geladenen Zeile addiert wird.Is the incremental value added to the identity value of the previous row that is loaded.

NOT FOR REPLICATIONNOT FOR REPLICATION
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Kann für die IDENTITY-Eigenschaft angegeben werden.Can be specified for the IDENTITY property. Wenn diese Klausel für die IDENTITY-Eigenschaft angegeben wird, werden Werte in Identitätsspalten nicht inkrementiert, wenn Replikations-Agents Einfügevorgänge ausführen.If this clause is specified for the IDENTITY property, values are not incremented in identity columns when replication agents perform insert operations.

ROWGUIDCOLROWGUIDCOL
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Gibt an, dass die Spalte eine Spalte mit für alle Zeilen global eindeutigen Bezeichnern ist.Specifies that the column is a row globally unique identifier column. ROWGUIDCOL kann nur einer uniqueidentifier-Spalte zugewiesen werden, und nur eine uniqueidentifier-Spalte pro Tabelle kann als ROWGUIDCOL-Spalte gekennzeichnet werden.ROWGUIDCOL can only be assigned to a uniqueidentifier column, and only one uniqueidentifier column per table can be designated as the ROWGUIDCOL column. ROWGUIDCOL kann keinen Spalten des benutzerdefinierten Datentyps zugewiesen werden.ROWGUIDCOL cannot be assigned to columns of user-defined data types.

ROWGUIDCOL erzwingt keine Eindeutigkeit der in der Spalte gespeicherten Werte.ROWGUIDCOL does not enforce uniqueness of the values stored in the column. ROWGUIDCOL generiert auch nicht automatisch Werte für neue Zeilen, die in die Tabelle eingefügt werden.Also, ROWGUIDCOL does not automatically generate values for new rows that are inserted into the table. Verwenden Sie entweder die NEWID-Funktion in INSERT-Anweisungen, oder geben Sie die NEWID-Funktion als Standard für die Spalte an, um eindeutige Werte für jede Spalte zu generieren.To generate unique values for each column, either use the NEWID function on INSERT statements or specify the NEWID function as the default for the column. Weitere Informationen finden Sie unter NEWID (Transact-SQL) und INSERT (Transact-SQL).For more information, see NEWID (Transact-SQL)and INSERT (Transact-SQL).

SPARSESPARSE
Gibt an, dass die Spalte eine Sparsespalte ist.Indicates that the column is a sparse column. Der Speicher für Sparsespalten ist für NULL-Werte optimiert.The storage of sparse columns is optimized for null values. Spalten mit geringer Dichte können nicht als NOT NULL festgelegt werden.Sparse columns cannot be designated as NOT NULL. Weitere Einschränkungen und Informationen zu Sparsespalten finden Sie unter Verwenden von Sparsespalten.For additional restrictions and more information about sparse columns, see Use Sparse Columns.

<column_constraint><column_constraint>
Die Definitionen der Spalteneinschränkungsargumente finden Sie unter column_constraint (Transact-SQL).For the definitions of the column constraint arguments, see column_constraint (Transact-SQL).

ENCRYPTED WITHENCRYPTED WITH
Gibt Verschlüsselungsspalten mit dem Feature Always Encrypted an.Specifies encrypting columns by using the Always Encrypted feature.

COLUMN_ENCRYPTION_KEY = key_nameCOLUMN_ENCRYPTION_KEY = key_name
Gibt Spaltenverschlüsselungsschlüssel an.Specifies the column encryption key. Weitere Informationen finden Sie unter CREATE COLUMN ENCRYPTION KEY (Transact-SQL).For more information, see CREATE COLUMN ENCRYPTION KEY (Transact-SQL).

ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED }ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED }
Diedeterministische Verschlüsselung verwendet eine Methode, die immer denselben verschlüsselten Wert für jeden angegebenen Klartextwert generiert.Deterministic encryption uses a method which always generates the same encrypted value for any given plain text value. Die Verwendung der deterministischen Verschlüsselung ermöglicht die Suche mit einer Gleichheitsüberprüfung, das Gruppieren und das Verknüpfen von Tabellen mit Gleichheitsjoins, basierend auf verschlüsselten Werten. Jedoch erlaubt sie nicht autorisierten Benutzern möglicherweise, Informationen zu verschlüsselten Werten zu erraten, indem sie die Muster in den verschlüsselten Spalten untersuchen.Using deterministic encryption allows searching using equality comparison, grouping, and joining tables using equality joins based on encrypted values, but can also allow unauthorized users to guess information about encrypted values by examining patterns in the encrypted column. Das Verknüpfen zweier Tabellen mit deterministisch verschlüsselten Spalten ist nur möglich, wenn die Spalten mit demselben Spaltenverschlüsselungsschlüssel verschlüsselt sind.Joining two tables on columns encrypted deterministically is only possible if both columns are encrypted using the same column encryption key. Die deterministische Verschlüsselung muss eine Spaltensortierung mit einer binary2-Sortierreihenfolge für Zeichenspalten verwenden.Deterministic encryption must use a column collation with a binary2 sort order for character columns.

Diezufällige Verschlüsselung verwendet eine Methode, die Daten in einer weniger vorhersagbaren Weise verschlüsselt.Randomized encryption uses a method that encrypts data in a less predictable manner. Die Verschlüsselung nach dem Zufallsprinzip ist zwar sicherer, verhindert jedoch jegliche Berechnungen und Indizierungen in verschlüsselten Spalten, es sei denn, Ihre SQL Server-Instanz unterstützt Always Encrypted mit Secure Enclaves.Randomized encryption is more secure, but it prevents any computations and indexing on encrypted columns, unless your SQL Server instance supports Always Encrypted with secure enclaves.

Wenn Sie Always Encrypted (ohne Secure Enclaves) verwenden, verwenden Sie die deterministische Verschlüsselung für Spalten, die mit Parametern oder Gruppierungsparametern durchsucht werden sollen (z.B. eine Behörden-ID-Nummer).If you are using Always Encrypted (without secure enclaves), use deterministic encryption for columns to be searched with parameters or grouping parameters, for example a government ID number. Verwenden Sie die zufällige Datenverschlüsselung für Daten (z.B. Kreditkartennummern), die nicht mit anderen Datensätzen gruppiert oder in Jointabellen verwendet werden und nach denen nicht gesucht wird, wenn andere Spalten verwendet werden (z.B. Transaktionsnummern), um die Zeile zu suchen, die die betreffende verschlüsselte Spalte enthält.Use randomized encryption, for data such as a credit card number, which is not grouped with other records, or used to join tables, and which is not searched for because you use other columns (such as a transaction number) to find the row which contains the encrypted column of interest.

Wenn Sie Always Encrypted mit Secure Enclaves verwenden, wird eine Verschlüsselung nach dem Zufallsprinzip empfohlen.If you are using Always Encrypted with secure enclaves, randomized encryption is a recommended encryption type.

Spalten müssen einen qualifizierenden Datentyp aufweisen.Columns must be of a qualifying data type.

ALGORITHMALGORITHM
Gilt für: SQL Server 2016 (13.x)SQL Server 2016 (13.x) bis SQL Server 2017SQL Server 2017, SQL-DatenbankSQL Database.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, SQL-DatenbankSQL Database.
Muss 'AEAD_AES_256_CBC_HMAC_SHA_256' sein.Must be 'AEAD_AES_256_CBC_HMAC_SHA_256'.

Weitere Informationen, u.a. auch zu Featureeinschränkungen finden Sie unter Always Encrypted (Datenbank-Engine).For more information including feature constraints, see Always Encrypted (Database Engine).

ADD MASKED WITH ( FUNCTION = ' mask_function ')ADD MASKED WITH ( FUNCTION = ' mask_function ')
Gilt für: SQL Server 2016 (13.x)SQL Server 2016 (13.x) bis SQL Server 2017SQL Server 2017, SQL-DatenbankSQL Database.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, SQL-DatenbankSQL Database.

Gibt eine dynamische Datenmaske anSpecifies a dynamic data mask. mask_function ist der Name der Maskierungsfunktion mit den entsprechenden Parametern.mask_function is the name of the masking function with the appropriate parameters. Die folgenden Funktionen stehen zur Verfügung:The following functions are available:

  • default()default()

  • email()email()

  • partial()partial()

  • random()random()

Weitere Informationen zu Funktionsparametern finden Sie im Artikel zur dynamischen Datenmaskierung.For function parameters, see Dynamic Data Masking.

RemarksRemarks

Wenn eine Spalte hinzugefügt wird, die über einen uniqueidentifier-Datentyp verfügt, kann sie mit einem Standardwert definiert werden, der die NEWID()-Funktion verwendet, um die eindeutigen Bezeichnerwerte in der neuen Spalte für jede vorhandene Zeile in der Tabelle anzugeben.If a column is added having a uniqueidentifier data type, it can be defined with a default that uses the NEWID() function to supply the unique identifier values in the new column for each existing row in the table.

Datenbank-EngineDatabase Engine erzwingt keine Reihenfolge für die Angabe von DEFAULT, IDENTITY, ROWGUIDCOL oder Spalteneinschränkungen in einer Spaltendefinition.The Datenbank-EngineDatabase Engine does not enforce an order for specifying DEFAULT, IDENTITY, ROWGUIDCOL, or column constraints in a column definition.

Die ALTER TABLE-Anweisung ergibt einen Fehler, wenn die Größe der Datenzeile durch Hinzufügen der Spalte 8060 Bytes überschreitet.ALTER TABLE statement will fail if adding the column will cause the data row size to exceed 8060 bytes.

BeispieleExamples

Beispiele finden Sie unter ALTER TABLE (Transact-SQL).For examples, see ALTER TABLE (Transact-SQL).

Weitere InformationenSee Also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)