Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric
De naam van het databaseobject wordt de id genoemd.
Servers, databases en databaseobjecten, zoals tabellen, weergaven, kolommen, indexen, triggers, procedures, beperkingen en regels, kunnen id's hebben. Voor de meeste objecten zijn id's vereist, maar sommige objecten, zoals beperkingen, maken ze optioneel.
U maakt een object-id wanneer u het object definieert. Gebruik de id om naar het object te verwijzen. Met de volgende instructie maakt u bijvoorbeeld een tabel met de id TableXen twee kolommen met de id's KeyCol en Description:
CREATE TABLE TableX (
KeyCol INT PRIMARY KEY,
Description NVARCHAR(80)
);
Deze tabel heeft ook een niet-benoemde beperking. De primaire-sleutelbeperking heeft geen id en wordt daarom een door het systeem gegenereerde naam toegewezen, PK__TableX__D7CB9CCCEEF0806Czoals , die u kunt observeren in weergaven van systeemmetagegevens, zoals sys.key_constraints.
Namen van beperkingen en andere schemabereikobjecten moeten uniek zijn binnen een databaseschema. Twee primaire sleutelbeperkingen kunnen bijvoorbeeld niet dezelfde naam hebben. Kolomnamen hoeven echter alleen uniek te zijn binnen elke tabel, niet binnen het schema.
De sortering van een identifier is afhankelijk van de niveau waarop u deze definieert.
- De standaardsortering van het exemplaar wordt toegewezen aan identificaties van objecten op exemplaarniveau, zoals inloggegevens en databasenamen.
- De standaardsortering van de database wordt toegewezen aan id's van objecten in een database, zoals tabellen, weergaven en kolomnamen. In een database met hoofdlettergevoelige sortering kunt u bijvoorbeeld twee tabellen maken met namen die alleen in hoofdlettergebruik verschillen, maar in een database met hoofdletterongevoelige sortering is dit niet mogelijk.
Note
De namen van variabelen of de parameters van functies en opgeslagen procedures moeten voldoen aan de regels voor Transact-SQL id's.
Klassen van identificatoren
Er zijn twee klassen id's:
Reguliere id's voldoen aan de regels voor de indeling van id's. Gewone identificatoren worden niet begrensd wanneer ze worden gebruikt in Transact-SQL statements.
USE AdventureWorks2022; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;Afgesloten identificatoren worden omgeven door dubbele aanhalingstekens (
") of vierkante haken ([en]). Id's die voldoen aan de regels voor de indeling van id's, worden mogelijk niet gescheiden. Voorbeeld:USE AdventureWorks2022; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
Id's die niet voldoen aan alle regels voor id's, moeten worden gescheiden in een Transact-SQL-instructie. Voorbeeld:
USE AdventureWorks2022;
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.
Zowel reguliere als afgebakende identificaties moeten uit 1 tot en met 128 tekens bestaan. Voor lokale tijdelijke tabellen mag de id maximaal 116 tekens bevatten.
Regels voor reguliere id's
De namen van variabelen, functies en opgeslagen procedures moeten voldoen aan deze regels voor Transact-SQL id's.
Het eerste teken moet een van de volgende tekens zijn:
Een letter zoals gedefinieerd door de Unicode Standard 3.2. De Unicode-definitie van letters bevat Latijnse tekens van
atot en metz, vanAtot en met lettertekensZuit andere talen.Het onderstrepingsteken (
_), bij teken (@) of nummerteken (#).Bepaalde symbolen aan het begin van een id hebben een speciale betekenis in SQL Server. Een reguliere id die begint met het at-teken geeft altijd een lokale variabele of parameter aan en kan niet worden gebruikt als de naam van een ander type object. Een id die begint met een nummerteken geeft een tijdelijke tabel of procedure aan. Een id die begint met dubbele getaltekens (
##) geeft een globaal tijdelijk object aan. Hoewel het cijferteken of het dubbele cijferteken tekens kunnen worden gebruikt om de namen van andere typen objecten te beginnen, raden we deze procedure niet aan.Sommige Transact-SQL functies hebben namen die beginnen met dubbele bijtekens (
@@). Om verwarring met deze functies te voorkomen, moet u geen namen gebruiken die beginnen met@@.
Volgende tekens kunnen de volgende lijst bevatten:
Letters zoals gedefinieerd in de Unicode-standaard 3.2.
Decimale getallen uit Basic Latin of andere nationale scripts.
Het at-teken (), dollarteken (
@$), cijferteken (#) of onderstrepingsteken (_).
De id mag geen Transact-SQL gereserveerd woord zijn. SQL Server reserveert zowel de hoofdletters als kleine letters van gereserveerde woorden. Wanneer u identificatoren in Transact-SQL-instructies gebruikt, dient u identificatoren die niet aan deze regels voldoen te begrenzen met dubbele aanhalingstekens of vierkante haken. De woorden die zijn gereserveerd, zijn afhankelijk van het compatibiliteitsniveau van de database. Stel het compatibiliteitsniveau van de database in met behulp van de instructie ALTER DATABASE-compatibiliteitsniveau .
Gebruik geen ingesloten spaties of speciale tekens.
Gebruik geen aanvullende tekens.
Wanneer u identificaties gebruikt in Transact-SQL-instructies, plaats identificaties die niet aan deze regels voldoen tussen dubbele aanhalingstekens of vierkante haken.
Sommige regels voor de indeling van reguliere id's zijn afhankelijk van het compatibiliteitsniveau van de database.
Cataloguscollatie in Azure SQL Database
U kunt de collatie van een logische server in Azure SQL Database niet wijzigen of instellen. U kunt de sorteringen van elke database echter afzonderlijk configureren voor gegevens in de database en voor catalogus. De catalogussortering bepaalt de sortering voor systeemmetagegevens, zoals object-id's. U kunt beide sorteringen onafhankelijk opgeven wanneer u de database maakt in Azure Portal, in T-SQL met CREATE DATABASE of in PowerShell met New-AzSqlDatabase.
Zie CREATE DATABASE voor meer informatie en voorbeelden. Geef een sortering op voor de database (COLLATE) en een catalogussortering voor systeemmetagegevens en object-id's (CATALOG_COLLATION).
Cataloguscollatie in SQL-database in Microsoft Fabric
Standaard is de sortering van een SQL-database in Fabric op dit moment SQL_Latin1_General_CP1_CI_AS, maar dit kan worden geconfigureerd bij het uitrollen. De sortering kan niet worden bijgewerkt na de implementatie. Sorteringen voor afzonderlijke kolommen worden ondersteund. Zie Opties voor het maken van een SQL-database in Fabric voor meer informatie over implementatieopties.