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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Имя объекта базы данных называется его идентификатором.The database object name is referred to as its identifier. Идентификаторы в MicrosoftMicrosoft SQL ServerSQL Server могут присваиваться любым сущностям:Everything in MicrosoftMicrosoft SQL ServerSQL Server can have an identifier. серверам, базам данных и их объектам, например таблицам, представлениям, столбцам, индексам, триггерам, процедурам, ограничениям и правилам.Servers, databases, and database objects, such as tables, views, columns, indexes, triggers, procedures, constraints, and rules, can have identifiers. Для большинства объектов идентификаторы необходимы, а для некоторых, например ограничений, необязательны.Identifiers are required for most objects, but are optional for some objects such as constraints.

Идентификатор объекта создается при определении объекта.An object identifier is created when the object is defined. Затем идентификатор используется для обращения к объекту.The identifier is then used to reference the object. Например, следующая инструкция создает таблицу с идентификатором TableXи двумя столбцами с идентификаторами KeyCol и Description:For example, the following statement creates a table with the identifier TableX, and two columns with the identifiers KeyCol and Description:

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

Эта таблица также содержит безымянное ограничение.This table also has an unnamed constraint. Ограничение PRIMARY KEY не имеет идентификатора.The PRIMARY KEY constraint has no identifier.

Параметры сортировки идентификатора зависят от уровня, для которого определен этот идентификатор.The collation of an identifier depends on the level at which it is defined. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. Идентификаторам объектов в пределах базы данных, например таблиц, представлений или имен столбцов, назначаются параметры сортировки, установленные по умолчанию для базы данных.Identifiers of objects in a database, such as tables, views, and column names, are assigned the default collation of the database. Например, две таблицы с именами, отличающимися только регистром, могут быть созданы в базе данных с параметрами сортировки c учетом регистра, но не могут быть созданы в базе данных с параметрами сортировки без учета регистра.For example, two tables with names that differ only in case can be created in a database that has case-sensitive collation, but cannot be created in a database that has case-insensitive collation.

Примечание

Имена переменных или параметров функций и хранимых процедур должны соответствовать правилам для идентификаторов Transact-SQLTransact-SQL .The names of variables, or the parameters of functions and stored procedures must comply with the rules for Transact-SQLTransact-SQL identifiers.

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

Существует два класса идентификаторов.There are two classes of identifiers:

Обычные идентификаторы соответствуют правилам, установленным для форматов идентификаторов.Regular identifiers Comply with the rules for the format of identifiers. Обычные идентификаторы не разделяются при использовании в инструкциях языка Transact-SQLTransact-SQL .Regular identifiers are not delimited when they are used in Transact-SQLTransact-SQL statements.

SELECT *
FROM TableX
WHERE KeyCol = 124

Идентификаторы с разделителем заключаются в двойные кавычки (") или квадратные скобки ([ ]).Delimited identifiers Are enclosed in double quotation marks (") or brackets ([ ]). Идентификаторы, которые соответствуют правилам форматирования идентификаторов, могут быть не разделяемыми.Identifiers that comply with the rules for the format of identifiers might not be delimited. Пример:For example:

SELECT *
FROM [TableX]         --Delimiter is optional.
WHERE [KeyCol] = 124  --Delimiter is optional.

Идентификаторы, которые не соответствуют всем правилам для идентификаторов, в инструкции языка Transact-SQLTransact-SQL должны быть разделены.Identifiers that do not comply with all the rules for identifiers must be delimited in a Transact-SQLTransact-SQL statement. Пример:For example:

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

И обычные идентификаторы, и идентификаторы с разделителями должны содержать от 1 до 128 символов.Both regular and delimited identifiers must contain from 1 through 128 characters. Для локальных временных таблиц идентификатор может содержать не более 116 символов.For local temporary tables, the identifier can have a maximum of 116 characters.

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

Имена переменных, функций и хранимых процедур должны соответствовать этим правилам для идентификаторов Transact-SQLTransact-SQL .The names of variables, functions, and stored procedures must comply with the following rules for Transact-SQLTransact-SQL identifiers.

  1. Первым символом должен быть один из следующих.The first character must be one of the following:

    • Буква в соответствии со стандартом Unicode Standard 3,2.A letter as defined by the Unicode Standard 3.2. Определения букв в стандарте Юникод включают латинские символы от «a» до «z», от «A» до «Z», а также буквенные символы других языков;The Unicode definition of letters includes Latin characters from a through z, from A through Z, and also letter characters from other languages.

    • подчеркивание (), символ @ или решетка (#).The underscore (), at sign (@), or number sign (#).

      Определенные символы в начале идентификатора в SQL ServerSQL Serverимеют особое значение.Certain symbols at the beginning of an identifier have special meaning in SQL ServerSQL Server. Обычный идентификатор, начинающийся символом @, означает локальную переменную или параметр и не может использоваться в качестве имени объекта какого-либо иного типа.A regular identifier that starts with the at sign always denotes a local variable or parameter and cannot be used as the name of any other type of object. Идентификатор, начинающийся символом решетки (#), означает временную таблицу или процедуру.An identifier that starts with a number sign denotes a temporary table or procedure. Идентификатор, начинающийся двойным символом решетки (##), означает глобальный временный объект.An identifier that starts with double number signs (##) denotes a global temporary object. Хотя символы решетки и двойной решетки могут использоваться в начале имен объектов других типов, мы не рекомендуем такой способ именования.Although the number sign or double number sign characters can be used to begin the names of other types of objects, we do not recommend this practice.

      Некоторые функции языка Transact-SQLTransact-SQL имеют имена, начинающиеся с двойного символа «@» (@@).Some Transact-SQLTransact-SQL functions have names that start with double at signs (@@). Во избежание путаницы с этими функциями не следует использовать имена, начинающиеся символами @@.To avoid confusion with these functions, you should not use names that start with @@.

  2. Последующие символы могут включать:Subsequent characters can include the following:

    • Буквы в соответствии со стандартом Unicode Standard 3,2.Letters as defined in the Unicode Standard 3.2.

    • Десятичные цифры из набора символов Basic Latin или другого набора символов национального языка.Decimal numbers from either Basic Latin or other national scripts.

    • символ @, знак доллара ($), решетка или подчеркивание.The at sign, dollar sign ($), number sign, or underscore.

  3. Идентификатор не должен быть зарезервированным словом Transact-SQLTransact-SQL .The identifier must not be a Transact-SQLTransact-SQL reserved word. SQL ServerSQL Server резервирует версии зарезервированных слов как в верхнем, так и в нижнем регистре.reserves both the uppercase and lowercase versions of reserved words. Если идентификаторы используются в инструкциях языка Transact-SQLTransact-SQL , идентификаторы, которые не соответствуют этим правилам, должны быть заключены в двойные кавычки или квадратные скобки.When identifiers are used in Transact-SQLTransact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets. Состав зарезервированных слов зависит от уровня совместимости базы данных.The words that are reserved depend on the database compatibility level. Этот уровень можно установить с помощью инструкции ALTER DATABASE .This level can be set by using the ALTER DATABASE statement.

  4. Внутри идентификаторов запрещается использовать символы пробела или специальные символы.Embedded spaces or special characters are not allowed.

  5. Дополнительные символы недопустимы.Supplementary characters are not allowed.

Если идентификаторы используются в инструкциях языка Transact-SQLTransact-SQL , идентификаторы, которые не соответствуют этим правилам, должны быть заключены в двойные кавычки или квадратные скобки.When identifiers are used in Transact-SQLTransact-SQL statements, the identifiers that do not comply with these rules must be delimited by double quotation marks or brackets.

Примечание

Некоторые правила форматирования обычных идентификаторов зависят от уровня совместимости базы данных.Some rules for the format of regular identifiers depend on the database compatibility level. Этот уровень можно установить с помощью процедуры ALTER DATABASE.This level can be set by using ALTER DATABASE.

См. также:See Also