Partilhar via


Identificadores de bases de dados

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

O nome do objeto de banco de dados é chamado de seu identificador. Tudo no SQL Server pode ter um identificador. Servidores, bancos de dados e objetos de banco de dados, como tabelas, exibições, colunas, índices, gatilhos, procedimentos, restrições e regras, podem ter identificadores. Os identificadores são necessários para a maioria dos objetos, mas são opcionais para alguns objetos, como restrições.

Um identificador de objeto é criado quando o objeto é definido. O identificador é então usado para fazer referência ao objeto. Por exemplo, a instrução a seguir cria uma tabela com o identificador TableXe duas colunas com os identificadores KeyCol e Description:

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

Esta tabela também tem uma restrição sem nome. A PRIMARY KEY restrição não tem identificador.

O agrupamento de um identificador depende do nível em que ele é definido. Identificadores de objetos no nível da instância, como logons e nomes de banco de dados, recebem o agrupamento padrão da instância. Identificadores de objetos em um banco de dados, como tabelas, exibições e nomes de coluna, recebem o agrupamento padrão do banco de dados. Por exemplo, duas tabelas com nomes que diferem apenas em maiúsculas podem ser criadas num banco de dados com agrupamento sensível a maiúsculas e minúsculas, mas não podem ser criadas num banco de dados com agrupamento insensível a maiúsculas e minúsculas.

Note

Os nomes das variáveis, ou os parâmetros de funções e procedimentos armazenados devem estar em conformidade com as regras para Transact-SQL identificadores.

Classes de identificadores

Existem duas classes de identificadores:

  • Os identificadores regulares cumprem as regras relativas ao formato dos identificadores. Os identificadores regulares não são delimitados quando são usados em instruções Transact-SQL.

    USE AdventureWorks2022;
    GO
    
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919;
    
  • Os identificadores delimitados estão entre aspas duplas (") ou parênteses ([ e ]). Os identificadores que cumprem as regras para o formato dos identificadores podem não ser delimitados. Por exemplo:

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

Os identificadores que não estão em conformidade com todas as regras para identificadores devem ser delimitados em uma declaração Transact-SQL. Por exemplo:

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.

Os identificadores regulares e delimitados devem conter de 1 a 128 caracteres. Para tabelas temporárias locais, o identificador pode ter no máximo 116 caracteres.

Regras para identificadores regulares

Os nomes das variáveis, funções e procedimentos armazenados devem estar em conformidade com as seguintes regras para Transact-SQL identificadores.

  1. O primeiro caractere deve ser um dos seguintes itens:

    • Uma letra conforme definido pela Norma Unicode 3.2. A definição Unicode de letras inclui caracteres latinos de a até z, de A até Z, e também caracteres de letras de outros idiomas.

    • O sublinhado (_), no sinal (@), ou no sinal numérico (#).

      Certos símbolos no início de um identificador têm um significado especial no SQL Server. Um identificador regular que começa com o sinal at sempre indica uma variável ou parâmetro local e não pode ser usado como o nome de qualquer outro tipo de objeto. Um identificador que começa com um sinal numérico indica uma tabela ou procedimento temporário. Um identificador que começa com sinais numéricos duplos (##) indica um objeto temporário global. Embora os caracteres de sinal numérico ou de sinal de número duplo possam ser usados para iniciar os nomes de outros tipos de objetos, não recomendamos essa prática.

      Algumas funções Transact-SQL têm nomes que começam com arrobas duplas (@@). Para evitar confusão com essas funções, você não deve usar nomes que comecem com @@.

  2. Os caracteres subsequentes podem incluir a seguinte lista:

    • Letras conforme definido na Norma Unicode 3.2.

    • Números decimais do latim básico ou de outros alfabetos nacionais.

    • O sinal de arroba (@), cifrão ($), sinal numérico (#), ou sublinhado (_).

  3. O identificador não deve ser uma palavra reservada Transact-SQL. O SQL Server reserva as versões maiúsculas e minúsculas das palavras reservadas. Quando identificadores são usados em instruções Transact-SQL, os identificadores que não estão em conformidade com essas regras devem ser delimitados por aspas duplas ou colchetes. As palavras reservadas dependem do nível de compatibilidade do banco de dados. Esse nível pode ser definido usando a instrução ALTER DATABASE compatibility level .

  4. Espaços incorporados ou caracteres especiais não são permitidos.

  5. Não são permitidos caracteres suplementares .

Quando identificadores são usados em instruções Transact-SQL, os identificadores que não estão em conformidade com essas regras devem ser delimitados por aspas duplas ou colchetes.

Note

Algumas regras para o formato de identificadores regulares dependem do nível de compatibilidade do banco de dados. Este nível pode ser definido usando o nível de compatibilidade ALTER DATABASE.

Agrupamento de catálogos no Banco de Dados SQL do Azure

Não é possível alterar ou definir o agrupamento lógico do servidor no Banco de Dados SQL do Azure. No entanto, você pode configurar os agrupamentos de cada banco de dados separadamente para dados no banco de dados e para catálogo. O agrupamento de catálogo determina o agrupamento de metadados do sistema, como identificadores de objeto. Ambos os agrupamentos podem ser especificados independentemente quando você criar o banco de dados no portal do Azure, em T-SQL com CREATE DATABASE, no PowerShell com New-AzSqlDatabase.

Para obter detalhes e exemplos, consulte CREATE DATABASE. Especifique um agrupamento para o banco de dados (COLLATE) e um agrupamento de catálogo para metadados do sistema e identificadores de objeto (CATALOG_COLLATION).

Agrupamento de catálogos no banco de dados SQL no Microsoft Fabric

Não podes alterar ou definir a classificação lógica do servidor na base de dados SQL no Fabric.

Atualmente, por defeito, a compilação de uma base de dados SQL no Fabric é SQL_Latin1_General_CP1_CI_AS e não pode ser atualizada. Está disponível o suporte para ordenações em colunas individuais.