Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
El nombre de un objeto de base de datos se conoce como su identificador.
Servidores, bases de datos y objetos de bases de datos, como tablas, vistas, columnas, índices, desencadenadores, procedimientos, restricciones, reglas, etc. pueden tener identificadores. La mayoría de los objetos requieren identificadores, pero algunos objetos, como restricciones, hacen que sean opcionales.
Cuando se define el objeto, se crea un identificador de objeto. Use el identificador para hacer referencia al objeto . Por ejemplo, la instrucción siguiente crea una tabla con el identificador TableXy dos columnas con los identificadores KeyCol y Description:
CREATE TABLE TableX (
KeyCol INT PRIMARY KEY,
Description NVARCHAR(80)
);
Esta tabla tiene también una restricción sin nombre. La restricción de clave principal no tiene ningún identificador y, por tanto, se le asignaría un nombre generado por el sistema como PK__TableX__D7CB9CCCEEF0806C, que podría observar en las vistas de metadatos del sistema como sys.key_constraints.
Los nombres de restricción y otros objetos con ámbito de esquema deben ser únicos dentro de un esquema de base de datos. Por ejemplo, dos restricciones de clave principal no pueden compartir un nombre. Sin embargo, los nombres de columna solo deben ser únicos dentro de cada tabla, no dentro del esquema.
La intercalación de un identificador depende del nivel en el que se defina.
- La intercalación predeterminada de la instancia se asigna a los identificadores de objetos de nivel de instancia, como las credenciales de inicio de sesión y los nombres de base de datos.
- La intercalación predeterminada de la base de datos se asigna a identificadores de objetos de una base de datos, como tablas, vistas y nombres de columna. Por ejemplo, puede crear dos tablas con nombres que solo difieren en el caso de una base de datos que tenga intercalación que distingue mayúsculas de minúsculas, pero no puede crearlas en una base de datos que tenga intercalación que no distingue mayúsculas de minúsculas.
Note
Los nombres de variables o los parámetros de funciones y procedimientos almacenados deben cumplir las reglas para los identificadores de Transact-SQL.
Clases de identificadores
Existen dos clases de identificadores:
Los identificadores normales cumplen con las reglas respecto al formato de identificadores. Los identificadores normales no están delimitados cuando se usan en instrucciones Transact-SQL.
USE AdventureWorks2022; GO SELECT * FROM HumanResources.Employee WHERE NationalIDNumber = 153479919;Los identificadores delimitados se incluyen entre comillas dobles (
") o paréntesis ([y]). Los identificadores que siguen las reglas de formato de los identificadores pueden no estar delimitados. Por ejemplo:USE AdventureWorks2022; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919 --Delimiter is optional.
Los identificadores que no cumplen las reglas de los identificadores deben estar delimitados en las instrucciones Transact-SQL. Por ejemplo:
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.
Ambos identificadores, normales y delimitados, deben tener entre 1 y 128 caracteres. En el caso de las tablas temporales locales, el identificador puede tener un máximo de 116 caracteres.
Reglas de los identificadores regulares
Los nombres de variables, funciones y procedimientos almacenados deben seguir estas reglas para Transact-SQL identificadores.
El primer carácter debe ser uno de los siguientes caracteres:
Una letra, tal como se define en el estándar Unicode 3,2. La definición Unicode de letras incluye los caracteres latinos de la
aa lazy de laAa laZ, además de los caracteres de letras de otros idiomas.El guion bajo (
_), arroba (@) o número (#).Ciertos símbolos al principio de un identificador tienen un significado especial en SQL Server. Un identificador normal que comience por el signo arroba siempre denotará una variable local o un parámetro, y no se puede usar como nombre de ningún otro tipo de objeto. Un identificador que empieza con el signo de número indica una tabla o procedimiento temporal. Un identificador que empieza con un signo de número doble (
##) indica un objeto temporal global. Aunque es posible utilizar los caracteres de signo de número o doble signo de número para comenzar los nombres de otros tipos de objetos, no se recomienda hacerlo.Algunas funciones de Transact-SQL tienen nombres que empiezan con un doble signo de arroba (
@@). Para evitar confusiones con estas funciones, no use nombres que empiecen por@@.
Los caracteres subsiguientes pueden incluir la siguiente lista:
Letras, tal como se definen en el estándar Unicode 3,2.
Números decimales del alfabeto Latín básico u otros alfabetos de otros idiomas.
El signo de arroba (
@), signo de dólar ($), signo de número (#) o guion bajo (_).
El identificador no debe ser una palabra reservada de Transact-SQL. SQL Server se reserva las versiones en mayúsculas y minúsculas de las palabras reservadas. Cuando se usan identificadores en instrucciones Transact-SQL, delimitan los identificadores que no cumplen estas reglas mediante comillas dobles o corchetes. Las palabras reservadas dependen del nivel de compatibilidad de la base de datos. Establezca el nivel de compatibilidad de la base de datos mediante la instrucción ALTER DATABASE Compatibility Level.
No use espacios incrustados ni caracteres especiales.
No use los caracteres suplementarios.
Cuando se usan identificadores en instrucciones Transact-SQL, delimitan los identificadores que no cumplen estas reglas mediante comillas dobles o corchetes.
Algunas reglas de formato de los identificadores normales dependen del nivel de compatibilidad de la base de datos.
Colación de catálogos en Azure SQL Database
No puede cambiar ni establecer la intercalación predeterminada del servidor lógico en la base de datos de Azure SQL. Sin embargo, puede configurar los ordenamientos de cada base de datos por separado, tanto para sus datos como para su catálogo. La intercalación de catálogo determina la intercalación para los metadatos del sistema, como los identificadores de objeto. Puede especificar ambas intercalaciones de forma independiente al crear la base de datos en Azure Portal, en T-SQL con CREATE DATABASE o en PowerShell con New-AzSqlDatabase.
Para más detalles y ejemplos, consulte CREATE DATABASE. Especifique una intercalación para la base de datos (COLLATE) y una intercalación de catálogo para los metadatos del sistema y los identificadores de objeto (CATALOG_COLLATION).
Intercalación de catálogos en base de datos SQL en Microsoft Fabric
Actualmente, por defecto, la intercalación de una base de datos SQL en Fabric es SQL_Latin1_General_CP1_CI_AS, pero esto se puede configurar al momento de la implementación. La intercalación no se puede actualizar después de la implementación. Se admiten intercalaciones en columnas individuales. Para obtener más información sobre las opciones de implementación, consulte Opciones para crear una base de datos SQL en Fabric.