Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics Endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Der Name des Datenbankobjekts ist sein Bezeichner.
Server, Datenbanken und Datenbankobjekte wie Tabellen, Sichten, Spalten, Indizes, Trigger, Prozeduren, Einschränkungen und Regeln können Bezeichner haben. Die meisten Objekte erfordern Bezeichner, aber einige Objekte, z. B. Einschränkungen, machen sie optional.
Sie erstellen einen Objektbezeichner, wenn Sie das Objekt definieren. Verwenden Sie den Bezeichner, 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)
);
Diese Tabelle hat ein unbenanntes Constraint. Die Primärschlüsseleinschränkung hat keinen benutzerdefinierten Bezeichner, sodass das System ihr einen generierten Namen zuweist, wie PK__TableX__D7CB9CCCEEF0806C. Dieser Name wird in Systemmetadatenansichten wie sys.key_constraints angezeigt.
Einschränkungsnamen und andere Schemabereichsobjekte müssen innerhalb eines Datenbankschemas eindeutig sein. Beispielsweise können zwei Primärschlüsseleinschränkungen keinen Namen teilen. Spaltennamen müssen jedoch nur innerhalb jeder Tabelle und nicht innerhalb des Schemas eindeutig sein.
Die Sortierung eines Bezeichners hängt von der Ebene ab, auf der Sie ihn definieren.
Die Standardsortierung der Instanz wird Bezeichnern von Objekten auf Instanzebene zugewiesen, z. B. Anmeldungen und Datenbanknamen.
Die Standardsortierung der Datenbank wird Bezeichnern von Objekten in einer Datenbank zugewiesen, z. B. Tabellen, Ansichten und Spaltennamen. Sie können beispielsweise zwei Tabellen mit Namen erstellen, die sich nur durch Groß-/Kleinschreibung unterscheiden, in einer Datenbank mit einer sortierungsabhängigen Groß-/Kleinschreibung. Sie können dies jedoch nicht in einer Datenbank mit einer sortierungsunabhängigen Groß-/Kleinschreibung tun.
Note
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 entsprechen den Formatregeln für Bezeichner. Sie werden nicht durch Trennzeichen getrennt, wenn sie in Transact-SQL-Anweisungen verwendet werden. Reguläre Bezeichner müssen den Regeln für reguläre Bezeichner entsprechen: Sie können nur Buchstaben, Ziffern und bestimmte Symbole (
_,@,#,$) enthalten, müssen mit einem Buchstaben oder einem von_,@,#beginnen und dürfen kein reserviertes Wort sein.USE AdventureWorks2025; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;Begrenzungsbezeichner werden entweder in doppelte Anführungszeichen (
") oder eckige Klammern ([und]) eingeschlossen. Mit Trennzeichen können Sie Namen verwenden, die andernfalls als reguläre Bezeichner ungültig wären, z. B. reservierte Schlüsselwörter, Namen mit Leerzeichen oder Namen mit Sonderzeichen. Bezeichner, die bereits den regulären Bezeichnerregeln entsprechen, können ebenfalls durch Trennzeichen getrennt werden, aber die Trennzeichen sind in diesem Fall optional. Weitere Informationen finden Sie unter Regeln für durch Trennzeichen getrennte Bezeichner.USE AdventureWorks2025; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919; --Delimiter is optional.
Bezeichner, die nicht den Regeln für reguläre Bezeichner entsprechen, müssen in einer Transact-SQL-Anweisung getrennt werden. Beispiel:
USE AdventureWorks2025;
GO
--Identifier contains a space and uses a reserved keyword.
CREATE TABLE [SalesOrderDetail Table]
(
[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.
Reguläre und begrenzte Bezeichner müssen aus 1 bis 128 Zeichen bestehen. Bei lokalen temporären Tabellen darf der Bezeichner maximal 116 Zeichen enthalten.
Regeln für durch Trennzeichen getrennte Bezeichner
Durch Trennzeichen getrennte Bezeichner sind entweder in eckige Klammern ([ und ]) oder doppelte Anführungszeichen (") eingeschlossen. Sie können eine beliebige Kombination von Zeichen enthalten, einschließlich Leerzeichen, reservierten Schlüsselwörtern und Sonderzeichen, die in regulären Bezeichnern nicht zulässig sind.
In Klammern eingeschlossene Bezeichner
Klammerntrennzeichen sind in eckige Klammern ([ und ]) eingeschlossen. Wenn der Bezeichner selbst eine rechte Klammer enthält (]), maskieren Sie diese durch Verdoppeln (]]). Eine linke Klammer ([) erfordert kein Escaping.
Um beispielsweise eine Tabelle zu erstellen und abzufragen, deren Name eckige Klammern enthält:
-- Create a table with a ] character in its name.
CREATE TABLE [My]]Table]
(
ID INT PRIMARY KEY
);
GO
-- Reference the table in a query.
SELECT *
FROM [My]]Table];
GO
Die QUOTENAME Funktion gibt einen gültigen, von Klammern begrenzten Bezeichner für eine bestimmte Zeichenfolge zurück und übernimmt die automatische Escape-Behandlung:
SELECT QUOTENAME('abc[]def');
Das vorherige Beispiel gibt zurück [abc[]]def].
Durch Doppelte Anführungszeichen getrennte Bezeichner
Durch doppelte Anführungszeichen abgegrenzte Bezeichner werden in doppelte Anführungszeichen (") eingeschlossen. Wenn der Bezeichner selbst ein doppeltes Anführungszeichen enthält, maskieren Sie es, indem Sie es verdoppeln ("").
Für Trennzeichen mit doppelten Anführungszeichen ist es erforderlich, dass SET QUOTED_IDENTIFIER ON (die Standardeinstellung für die meisten Verbindungen) verwendet wird. Wenn QUOTED_IDENTIFIEROFF ist, behandelt die Datenbank-Engine doppelt gequotete Zeichenfolgen als Zeichenfolgenliterale anstelle von Bezeichnern. Weitere Informationen finden Sie unter SET QUOTED_IDENTIFIER.
Um beispielsweise eine Tabelle zu erstellen und abzufragen, die reservierte Schlüsselwörter als Bezeichner verwendet:
SET QUOTED_IDENTIFIER ON;
GO
-- Create a table using double-quote delimiters.
CREATE TABLE "My Table"
(
"Order" INT NOT NULL,
"Description" NVARCHAR (100)
);
GO
SELECT "Order",
"Description"
FROM "My Table";
GO
Note
SET QUOTED_IDENTIFIER hat keine Auswirkung auf klammerabgegrenzte Bezeichner. Klammertrennzeichen funktionieren immer unabhängig von der QUOTED_IDENTIFIER Einstellung.
Regeln für reguläre Bezeichner
Die Namen von Variablen, Funktionen und gespeicherten Prozeduren müssen diesen Regeln für Transact-SQL Bezeichner entsprechen.
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
abiszund vonAbisZsowie Buchstaben anderer Sprachen.Das Sonderzeichen Unterstrich (
_), At-Zeichen (@) oder Nummernzeichen (#).Bestimmte Symbole am Anfang eines Bezeichners haben im Datenbank-Engine 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. Obwohl das Nummernzeichen oder doppelte Nummernzeichen verwendet werden können, um die Namen anderer Objekttypen zu beginnen, sollten Sie diese Vorgehensweise vermeiden.Einige Transact-SQL Funktionen weisen Namen auf, die mit doppelten Zeichen beginnen (
@@). Um Verwirrung mit diesen Funktionen zu vermeiden, verwenden Sie keine Namen, die mit@@beginnen.
Als nachfolgende Zeichen kann die folgende Liste verwendet werden:
Im Unicode-Standard 3,2 definierte Buchstaben.
Dezimalzahlen aus dem lateinischen Grundalphabet oder anderen nationalen Schriften.
At-Zeichen (
@), Dollar-Zeichen ($), Nummernzeichen (#) oder ein Unterstrich (_).
Der Bezeichner darf kein reserviertes Transact-SQL Wort sein. Die Datenbank-Engine behält sich sowohl die Groß- als auch klein geschriebenen Versionen reservierter Wörter vor. Wenn Sie Bezeichner in Transact-SQL-Anweisungen verwenden, trennen Sie Bezeichner, die diese Regeln nicht einhalten, indem Sie doppelte Anführungszeichen oder Klammern verwenden. Welche Wörter reserviert werden, hängt vom Kompatibilitätsgrad der Datenbank ab. Legen Sie die Kompatibilitätsstufe der Datenbank mithilfe der ALTER DATABASE Compatibility Level-Anweisung fest.
Verwenden Sie keine eingebetteten Leerzeichen oder Sonderzeichen.
Verwenden Sie keine Zusatzzeichen.
Wenn Sie Bezeichner in Transact-SQL-Anweisungen verwenden, trennen Sie Bezeichner, die diese Regeln nicht einhalten, indem Sie doppelte Anführungszeichen oder Klammern verwenden. Einige dieser Regeln variieren je nach Datenbankkompatibilitätsstufe.
Katalogsortierung in Azure SQL-Datenbank
Sie können die logische Serversortierung für Azure SQL-Datenbank nicht ändern oder festlegen. Sie können jedoch die Sortierreihenfolge für jede Datenbank separat für die Daten in der Datenbank und für den Katalog konfigurieren. Die Katalogsortierung bestimmt die Sortierung für Systemmetadaten, z. B. Objektbezeichner. Sie können beide Sortierungen unabhängig angeben, wenn Sie die Datenbank im Azure Portal
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.
Katalogsortierung in sql-Datenbank in Microsoft Fabric
Die Standardsortierung einer SQL-Datenbank in Fabric ist SQL_Latin1_General_CP1_CI_AS. Sie können zur Bereitstellungszeit eine andere Sortierung konfigurieren, sie können sie jedoch nicht ändern, nachdem die Datenbank erstellt wurde. Einzelne Spalten können eigene Sortierungen verwenden. Weitere Informationen zu Bereitstellungsoptionen finden Sie unter Options zum Erstellen einer SQL-Datenbank in Fabric.