Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Point de terminaison d’analytique SQL dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base de données SQL dans Microsoft Fabric
Le nom d'un objet d'une base de données est son identificateur.
Les serveurs, les bases de données et les objets de bases de données tels que les tables, les vues, les colonnes, les index, les déclencheurs, les procédures, les contraintes, les règles, etc. peuvent avoir des identificateurs. La plupart des objets nécessitent des identificateurs, mais certains objets, tels que les contraintes, les rendent facultatifs.
Vous créez un identificateur d’objet lorsque vous définissez l’objet. Utilisez l’identificateur pour référencer l’objet. L'instruction suivante, par exemple, crée une table avec l'identificateur TableX, et deux colonnes avec les identificateurs KeyCol et Description:
CREATE TABLE TableX (
KeyCol INT PRIMARY KEY,
Description NVARCHAR(80)
);
Cette table comporte également une contrainte sans nom. La contrainte de clé primaire n’a pas d’identificateur. Elle est donc affectée à un nom généré par le système comme PK__TableX__D7CB9CCCEEF0806C, que vous pouvez observer dans les vues de métadonnées système comme sys.key_constraints.
Les noms de contraintes et d'autres objets portés par le schéma doivent être uniques au sein d'un schéma de base de données. Par exemple, deux contraintes de clé primaire ne peuvent pas partager un nom. Toutefois, les noms de colonnes doivent uniquement être uniques dans chaque table, et non dans le schéma.
Le classement d’un identificateur dépend du niveau auquel vous le définissez.
- Le classement par défaut de l’instance est affecté à des identificateurs d’objets au niveau de l’instance, tels que les connexions et les noms de base de données.
- Le classement par défaut de la base de données est attribué aux identificateurs d’objets d’une base de données, tels que les tables, les vues et les noms de colonnes. Par exemple, vous pouvez créer deux tables avec des noms qui diffèrent uniquement dans le cas d’une base de données qui a un classement respectant la casse, mais vous ne pouvez pas les créer dans une base de données qui ne respecte pas la casse.
Note
Les noms de variables, ou les paramètres des fonctions et des procédures stockées doivent toujours respecter les règles des identificateurs Transact-SQL.
Classes d’identificateurs
Il existe deux classes d'identificateurs :
Les identificateurs réguliers respectent les règles relatives au format des identificateurs. Les identifiants réguliers ne sont pas délimités lorsqu'ils sont utilisés dans des instructions Transact-SQL.
USE AdventureWorks2022; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;Les identificateurs délimités sont placés entre guillemets (
") ou entre crochets ([et]). Les identificateurs qui respectent les règles relatives au format des identificateurs peuvent ne pas être délimités. Par exemple:USE AdventureWorks2022; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
Les identificateurs qui ne respectent pas toutes les règles doivent être délimités dans une instruction Transact-SQL. Par exemple:
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.
Qu'ils soient réguliers ou délimités, les identificateurs doivent contenir de 1 à 128 caractères. Dans le cas des tables temporaires locales, l'identificateur peut contenir jusqu'à 116 caractères.
Les règles pour les identificateurs standard
Les noms de variables, de fonctions et de procédures stockées doivent respecter ces règles pour les identificateurs Transact-SQL.
Le premier caractère doit être l’un des caractères suivants :
Une des lettres définies par Unicode Standard 3,2. La définition Unicode des lettres inclut les caractères latins de
aàz, deAàZ, ainsi que les lettres d'autres langues.Les symboles trait de soulignement (
_), arobase (@) ou dièse (#).Certains symboles au début d'un identificateur ont une signification particulière dans SQL Server. Un identificateur régulier qui commence par le signe arobase (@) dénote toujours une variable ou un paramètre local et ne peut pas être utilisé comme le nom d'un autre type d'objet. Un identificateur commençant par un symbole numéro indique un objet temporaire (table ou procédure). Un identificateur commençant par deux signes dièse (
##) indique un objet temporaire global. Bien que le symbole dièse (#) ou double dièse (##) puisse être utilisé pour commencer les noms d'autres types d'objets, nous déconseillons cette pratique.Les noms de certaines fonctions Transact-SQL commencent par un double arobase (
@@). Pour éviter toute confusion avec ces fonctions, n’utilisez pas de noms commençant par@@.
Les caractères suivants peuvent inclure la liste suivante :
Des lettres définies dans Unicode Standard 3,2.
Des nombres décimaux de Basic Latin ou d'autres scripts nationaux.
L’arobase (
@), le signe dollar ($), le signe dièse (#) ou le trait de soulignement (_).
L’identificateur ne doit pas être un mot réservé Transact-SQL. SQL Server conserve les majuscules et les minuscules des mots réservés. Lorsque vous utilisez des identificateurs dans des instructions Transact-SQL, délimitez les identificateurs qui ne respectent pas ces règles en utilisant des guillemets doubles ou des crochets. Les mots réservés dépendent du niveau de compatibilité de la base de données. Définissez le niveau de compatibilité de la base de données à l’aide de l’instruction de niveau de compatibilité ALTER DATABASE .
N’utilisez pas d’espaces incorporés ou de caractères spéciaux.
N’utilisez pas de caractères supplémentaires.
Lorsque vous utilisez des identificateurs dans des instructions Transact-SQL, délimitez les identificateurs qui ne respectent pas ces règles en utilisant des guillemets doubles ou des crochets.
Certaines règles relatives au format des identificateurs réguliers dépendent du niveau de compatibilité de la base de données.
Classement du catalogue dans la base de données Azure SQL
Vous ne pouvez pas modifier ou définir le classement du serveur logique sur Azure SQL Database. Toutefois, vous pouvez configurer les classements de chaque base de données séparément pour les données de la base de données et pour le catalogue. Le classement du catalogue détermine le classement pour les métadonnées système, telles que les identificateurs d’objet. Vous pouvez spécifier les deux classements indépendamment lorsque vous créez la base de données dans le portail Azure, dans T-SQL avec CREATE DATABASE ou dans PowerShell avec New-AzSqlDatabase.
Pour plus d’informations et exemples, consultez CREATE DATABASE. Spécifiez un classement pour la base de données (COLLATE) et un classement de catalogue pour les métadonnées système et les identificateurs d’objet (CATALOG_COLLATION).
Classement du catalogue dans une base de données SQL dans Microsoft Fabric
Actuellement, par défaut, le classement d’une base de données SQL dans Fabric est SQL_Latin1_General_CP1_CI_AS, mais il peut être configuré lors du déploiement. Le classement ne peut pas être mis à jour après le déploiement. Les classements sur des colonnes individuelles sont pris en charge. Pour plus d’informations sur les options de déploiement, consultez Options pour créer une base de données SQL dans Fabric.