Datenbankbezeichner

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Der Name eines Datenbankobjekts wird Bezeichner genannt. Jedes Element in Microsoft SQL Server kann über einen Bezeichner verfügen. Hierzu gehören beispielsweise Server, Datenbanken und Datenbankobjekte wie Tabellen, Sichten, Spalten, Indizes, Trigger, Prozeduren, Einschränkungen und Regeln. Bezeichner werden für die meisten Objekte benötigt, sind jedoch bei einigen Objekten, z. B. Einschränkungen, optional.

Der Bezeichner eines Objekts wird erstellt, wenn das Objekt definiert wird. Der Bezeichner wird anschließend verwendet, um auf das Objekt zu verweisen. So erstellt beispielsweise die folgende Anweisung eine Tabelle mit dem Bezeichner TableXund zwei Spalten mit den Bezeichnern KeyCol und Description:

CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80));

Die Tabelle enthält außerdem eine unbenannte Einschränkung. Die PRIMARY KEY -Einschränkung besitzt keinen Bezeichner.

Die Sortierung eines Bezeichners hängt von der Ebene ab, auf der er definiert ist. Bezeichnern von Objekten auf Instanzebene, wie z. B. Anmeldenamen und Datenbanknamen, wird die Standardsortierung der Instanz zugewiesen. Bezeichnern von Objekten innerhalb einer Datenbank, z. B. Tabellen, Sichten und Spaltennamen, wird die Standardsortierung der Datenbank zugewiesen. Beispielsweise können in einer Datenbank mit einer nach Groß-/Kleinschreibung unterscheidenden Sortierung zwei Tabellen mit gleichen Namen, die sich nur durch verschiedene Groß-/Kleinschreibung unterscheiden, erstellt werden; in einer Datenbank mit einer Sortierung ohne Unterscheidung nach Groß-/Kleinschreibung ist dies jedoch nicht möglich.

Hinweis

Die Namen von Variablen oder die Parameter von Funktionen und gespeicherten Prozeduren müssen den Regeln für Transact-SQL-Bezeichner entsprechen.

Bezeichnerklassen

Es gibt zwei Klassen von Bezeichnern:

  • Reguläre Bezeichner
    Sie entsprechen den Regeln für das Format von Bezeichnern. Reguläre Bezeichner sind nicht begrenzt, wenn sie in Transact-SQL-Anweisungen verwendet werden.

    USE AdventureWorks2022;
    GO
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919
    
  • Begrenzungsbezeichner
    Sie werden entweder in doppelte Anführungszeichen (") oder eckige Klammern ([ ]) eingeschlossen. Bezeichner, die den Regeln für das Format von Bezeichnern entsprechen, können u. U. nicht begrenzt sein. Beispiel:

    USE AdventureWorks2022;
    GO
    SELECT *
    FROM [HumanResources].[Employee] --Delimiter is optional.
    WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
    

Bezeichner, die nicht allen Regeln für Bezeichner entsprechen, müssen in einer Transact-SQL-Anweisung begrenzt werden. Beispiel:

USE AdventureWorks2022;
GO
CREATE TABLE [SalesOrderDetail Table] --Identifier contains a space and uses a reserved keyword.
(
    [Order] [int] NOT NULL,
    [SalesOrderDetailID] [int] IDENTITY(1,1) NOT NULL,
    [OrderQty] [smallint] NOT NULL,
    [ProductID] [int] NOT NULL,
    [UnitPrice] [money] NOT NULL,
    [UnitPriceDiscount] [money] NOT NULL,
    [ModifiedDate] [datetime] NOT NULL,
  CONSTRAINT [PK_SalesOrderDetail_Order_SalesOrderDetailID] PRIMARY KEY CLUSTERED 
  ([Order] ASC, [SalesOrderDetailID] ASC)
);
GO

SELECT *
FROM [SalesOrderDetail Table]  --Identifier contains a space and uses a reserved keyword.
WHERE [Order] = 10;            --Identifier is a reserved keyword.

Sowohl reguläre als auch Begrenzungsezeichner müssen zwischen 1 und 128 Zeichen enthalten. Bei lokalen temporären Tabellen darf der Bezeichner maximal 116 Zeichen enthalten.

Regeln für reguläre Bezeichner

Die Namen von Variablen, Funktionen und gespeicherten Prozeduren müssen den folgenden Regeln für Transact-SQL-Bezeichner entsprechen.

  1. Das erste Zeichen muss eines der folgenden Zeichen sein:

    • Ein vom Unicode-Standard 3,2 definierter Buchstabe. Die Unicode-Definition von Buchstaben enthält die lateinischen Buchstaben von a bis z und von A bis Z sowie Buchstaben anderer Sprachen.

    • Das Sonderzeichen Unterstrich (_), At-Zeichen (@) oder Nummernzeichen (#).

      Bestimmte Sonderzeichen am Anfang eines Bezeichners haben in SQL Servereine besondere Bedeutung. Ein mit dem At-Zeichen beginnender regulärer Bezeichner bezeichnet immer eine lokale Variable oder einen lokalen Parameter und kann nicht als Name eines Objekts eines anderen Typs verwendet werden. Ein mit dem Nummernzeichen (#) beginnender Bezeichner steht für eine temporäre Tabelle oder Prozedur. Ein Bezeichner, der mit einem doppelten Nummernzeichen (##) beginnt, steht für ein globales temporäres Objekt. Das Nummernzeichen und das doppelte Nummernzeichen können zwar auch am Anfang von Namen von Objekten anderer Typen stehen, diese Vorgehensweise wird jedoch nicht empfohlen.

      Einige Transact-SQL-Funktionen haben Namen, die mit doppelten At-Zeichen beginnen (@@). Um Probleme mit diesen Funktionen zu vermeiden, sollten Sie keine Namen verwenden, die mit einem doppelten At-Zeichen (@@) beginnen.

  2. Als nachfolgende Zeichen können folgende Zeichen verwendet werden:

    • Im Unicode-Standard 3,2 definierte Buchstaben.

    • Dezimalzahlen aus dem lateinischen Grundalphabet oder anderen nationalen Schriften.

    • At-Zeichen (@), Dollarzeichen ($), Nummernzeichen (#) oder Unterstrich (_).

  3. Der Bezeichner darf kein reserviertes Transact-SQL-Wort sein. SQL Server reserviert sowohl die groß- also auch die kleingeschriebene Version reservierter Wörter. Beim Verwenden von Bezeichnern in Transact-SQL-Anweisungen müssen alle Bezeichner, die diesen Regeln nicht entsprechen, durch doppelte Anführungszeichen oder eckige Klammern begrenzt werden. Welche Wörter reserviert werden, hängt vom Kompatibilitätsgrad der Datenbank ab. Der Grad kann mithilfe der ALTER DATABASE -Anweisung festgelegt werden.

  4. Eingebettete Leerzeichen oder Sonderzeichen sind nicht zulässig.

  5. Ergänzende Zeichen sind nicht zulässig.

Beim Verwenden von Bezeichnern in Transact-SQL-Anweisungen müssen alle Bezeichner, die diesen Regeln nicht entsprechen, durch doppelte Anführungszeichen oder eckige Klammern begrenzt werden.

Hinweis

Einige Regeln für das Format regulärer Bezeichner sind vom Kompatibilitätsgrad der Datenbank abhängig. Dieser Grad kann mithilfe von ALTER DATABASEfestgelegt werden.

Katalogsortierung in Azure SQL-Datenbank

Sie können die logische Serversortierung in der Azure SQL-Datenbank nicht ändern oder festlegen, aber Sie können die Sortierungen jeder Datenbank für Daten in der Datenbank und für den Katalog getrennt voneinander konfigurieren. Die Katalogsortierung bestimmt die Sortierung für Systemmetadaten, z. B. Objektbezeichner. Beide Sortierungen können unabhängig angegeben werden, wenn Sie die Datenbank im Azure-Portal, in T-SQL mit CREATE DATABASE, in PowerShell mit New-AzSqlDatabase erstellen.

Weitere Informationen und Beispiele finden Sie unter CREATE DATABASE. Geben Sie eine Sortierung für die Datenbank (COLLATE) und eine Katalogsortierung für Systemmetadaten und Objektbezeichner (CATALOG_COLLATION) an.

Nächste Schritte