Идентификаторы базы данных

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Имя объекта базы данных называется его идентификатором. Все в Microsoft SQL Server может иметь идентификатор. серверам, базам данных и их объектам, например таблицам, представлениям, столбцам, индексам, триггерам, процедурам, ограничениям и правилам. Для большинства объектов идентификаторы необходимы, а для некоторых, например ограничений, необязательны.

Идентификатор объекта создается при определении объекта. Затем идентификатор используется для обращения к объекту. Например, следующая инструкция создает таблицу с идентификатором TableXи двумя столбцами с идентификаторами KeyCol и Description:

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

Эта таблица также содержит безымянное ограничение. Ограничение PRIMARY KEY не имеет идентификатора.

Параметры сортировки идентификатора зависят от уровня, для которого определен этот идентификатор. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. Идентификаторам объектов в пределах базы данных, например таблиц, представлений или имен столбцов, назначаются параметры сортировки, установленные по умолчанию для базы данных. Например, две таблицы с именами, отличающимися только регистром, могут быть созданы в базе данных с параметрами сортировки c учетом регистра, но не могут быть созданы в базе данных с параметрами сортировки без учета регистра.

Примечание.

Имена переменных или параметры функций и хранимых процедур должны соответствовать правилам идентификаторов Transact-SQL.

Классы идентификаторов

Существует два класса идентификаторов.

  • Обычные идентификаторы
    Соответствуют правилам форматирования идентификаторов. Обычные идентификаторы не разделяются, если они используются в инструкциях Transact-SQL.

    USE AdventureWorks2022;
    GO
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919
    
  • Идентификаторы с разделителем
    Заключаются в двойные кавычки (") или квадратные скобки ([ ]). Идентификаторы, которые соответствуют правилам форматирования идентификаторов, могут быть не разделяемыми. Например:

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

Идентификаторы, которые не соответствуют всем правилам идентификаторов, должны быть разделены в инструкции Transact-SQL. Например:

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.

И обычные идентификаторы, и идентификаторы с разделителями должны содержать от 1 до 128 символов. Для локальных временных таблиц идентификатор может содержать не более 116 символов.

Правила для обычных идентификаторов

Имена переменных, функций и хранимых процедур должны соответствовать следующим правилам для идентификаторов Transact-SQL.

  1. Первым символом должен быть один из следующих.

    • Буква в соответствии со стандартом Unicode Standard 3,2. Определения букв в стандарте Юникод включают латинские символы от «a» до «z», от «A» до «Z», а также буквенные символы других языков;

    • подчеркивание (_), символ @ или решетка (#).

      Некоторые символы в начале идентификатора имеют особое значение в SQL Server. Обычный идентификатор, начинающийся символом @, означает локальную переменную или параметр и не может использоваться в качестве имени объекта какого-либо иного типа. Идентификатор, начинающийся символом решетки (#), означает временную таблицу или процедуру. Идентификатор, начинающийся двойным символом решетки (##), означает глобальный временный объект. Хотя символы решетки и двойной решетки могут использоваться в начале имен объектов других типов, мы не рекомендуем такой способ именования.

      Некоторые функции Transact-SQL имеют имена, начинающиеся с двойных знаков (@@). Во избежание путаницы с этими функциями не следует использовать имена, начинающиеся символами @@.

  2. Последующие символы могут включать:

    • Буквы в соответствии со стандартом Unicode Standard 3,2.

    • Десятичные цифры из набора символов Basic Latin или другого набора символов национального языка.

    • Знак по адресу (@), знак доллара ($), знак номера (#) или символ подчеркивания (_).

  3. Идентификатор не должен быть зарезервированным словом Transact-SQL. SQL Server резервирует как верхний регистр, так и строчные версии зарезервированных слов. Если идентификаторы используются в инструкциях Transact-SQL, идентификаторы, не соответствующие этим правилам, должны быть разделены двойными кавычками или скобками. Состав зарезервированных слов зависит от уровня совместимости базы данных. Этот уровень можно установить с помощью инструкции ALTER DATABASE .

  4. Внутри идентификаторов запрещается использовать символы пробела или специальные символы.

  5. Дополнительные символы недопустимы.

Если идентификаторы используются в инструкциях Transact-SQL, идентификаторы, не соответствующие этим правилам, должны быть разделены двойными кавычками или скобками.

Примечание.

Некоторые правила форматирования обычных идентификаторов зависят от уровня совместимости базы данных. Этот уровень можно установить с помощью процедуры ALTER DATABASE.

Параметры сортировки каталога в База данных SQL Azure

Невозможно изменить или задать параметры сортировки логического сервера в База данных SQL Azure, но можно настроить параметры сортировки каждой базы данных отдельно для данных в базе данных и для каталога. Параметры сортировки каталога определяют параметры сортировки для системных метаданных, таких как идентификаторы объектов. Оба параметров сортировки можно задать независимо при создании базы данных в портал Azure в T-SQL с помощью CREATE DATABASE в PowerShell с new-AzSqlDatabase.

Дополнительные сведения и примеры см. в статье CREATE DATABASE. Укажите параметры сортировки для базы данных (COLLATE) и параметры сортировки каталога для системных метаданных и идентификаторов объектов (CATALOG_COLLATION).

Следующие шаги