Sdílet prostřednictvím


Identifikátory databáze

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Název databázového objektu se označuje jako jeho identifikátor. Všechno v SQL Serveru může mít identifikátor. Servery, databáze a databázové objekty, jako jsou tabulky, zobrazení, sloupce, indexy, triggery, procedury, omezení a pravidla, můžou mít identifikátory. Identifikátory jsou požadovány pro většinu objektů, ale jsou volitelné pro některé objekty, jako jsou omezení.

Identifikátor objektu se vytvoří při definování objektu. Identifikátor se pak použije k odkazu na objekt. Například následující příkaz vytvoří tabulku s identifikátorem TableXa dva sloupce s identifikátory KeyCol a Description:

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

Tato tabulka má také nepojmenované omezení. Omezení PRIMARY KEY nemá žádný identifikátor.

Kolace identifikátoru závisí na úrovni, na které je definován. Identifikátory objektů na úrovni instance, jako jsou přihlášení a názvy databází, jsou přiřazeny výchozí kolaci instance. Identifikátory objektů v databázi, jako jsou tabulky, zobrazení a názvy sloupců, jsou přiřazeny výchozí kolaci databáze. Například dvě tabulky s názvy, které se liší pouze v případě, lze vytvořit v databázi, která obsahuje kolaci s rozlišováním velkých a malých písmen, ale nelze ji vytvořit v databázi, která má kolaci nerozlišující malá a velká písmena.

Note

Názvy proměnných nebo parametry funkcí a uložených procedur musí splňovat pravidla pro identifikátory Transact-SQL.

Třídy identifikátorů

Existují dvě třídy identifikátorů:

  • Běžné identifikátory odpovídají pravidlům pro formát identifikátorů. Běžné identifikátory nejsou oddělené, když se používají v příkazech Transact-SQL.

    USE AdventureWorks2022;
    GO
    
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919;
    
  • Identifikátory s oddělovači jsou uzavřeny v uvozovkách (") nebo hranatých závorkách ([ a ]). Identifikátory, které splňují pravidla pro formát identifikátorů, nemusí být oddělené. Například:

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

Identifikátory, které nevyhovují všem pravidlům identifikátorů, musí být v příkazu Transact-SQL oddělené. Například:

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.

Běžné i oddělené identifikátory musí obsahovat 1 až 128 znaků. U místních dočasných tabulek může mít identifikátor maximálně 116 znaků.

Pravidla pro běžné identifikátory

Názvy proměnných, funkcí a uložených procedur musí splňovat následující pravidla pro identifikátory Transact-SQL.

  1. První znak musí být jedna z následujících položek:

    • Písmeno definované standardem Unicode 3.2. Definice písmen Unicode zahrnuje znaky latinky od a do z, od A do Z a také písmena z jiných jazyků.

    • Podtržítko (_), znaménko (@) nebo znaménko čísla (#).

      Některé symboly na začátku identifikátoru mají v SQL Serveru zvláštní význam. Běžný identifikátor začínající znakem at vždy označuje místní proměnnou nebo parametr a nedá se použít jako název žádného jiného typu objektu. Identifikátor, který začíná znaménkem čísla, označuje dočasnou tabulku nebo proceduru. Identifikátor, který začíná dvojitými znaky čísla („##“) označuje globální dočasný objekt. I když se znaménko čísel nebo znaky s dvojitým číslem dají použít k zahájení názvů jiných typů objektů, nedoporučujeme tento postup.

      Některé Transact-SQL funkce mají názvy začínající dvojitými znaky (@@). Abyste se vyhnuli nejasnostem s těmito funkcemi, neměli byste používat názvy začínající na @@.

  2. Následující znaky můžou obsahovat následující seznam:

    • Písmena definovaná ve standardu Unicode 3.2.

    • Desetinná čísla ze základní latinky nebo jiných národních skriptů.

    • Znaménko zavináč (@), znak dolaru ($), křížek (#) nebo podtržítko (_).

  3. Identifikátor nesmí být Transact-SQL vyhrazeným slovem. SQL Server si vyhrazuje velká i malá písmena rezervovaných slov. Pokud se identifikátory používají v příkazech Transact-SQL, musí být identifikátory, které nevyhovují těmto pravidlům, odděleny dvojitými uvozovkami nebo hranatými závorkami. Rezervovaná slova závisí na úrovni kompatibility databáze. Tuto úroveň lze nastavit pomocí příkazu ALTER DATABASE compatibility level.

  4. Vložené mezery nebo speciální znaky nejsou povolené.

  5. Doplňkové znaky nejsou povolené.

Pokud se identifikátory používají v příkazech Transact-SQL, musí být identifikátory, které nevyhovují těmto pravidlům, odděleny dvojitými uvozovkami nebo hranatými závorkami.

Note

Některá pravidla pro formát běžných identifikátorů závisí na úrovni kompatibility databáze. Tuto úroveň lze nastavit pomocí úrovně kompatibility ALTER DATABASE.

Kolace katalogu ve službě Azure SQL Database

Kolaci logického serveru nemůžete ve službě Azure SQL Database změnit ani nastavit. Kolace jednotlivých databází ale můžete nakonfigurovat samostatně pro data v databázi a pro katalog. Kolace katalogu určuje kolaci pro systémová metadata, například identifikátory objektů. Obě kolace je možné zadat nezávisle při vytvoření databáze na webu Azure Portal, v T-SQL s CREATE DATABASE, v PowerShellu s New-AzSqlDatabase.

Podrobnosti a příklady najdete v tématu CREATE DATABASE. Zadejte kolaci pro databázi (COLLATE) a kolaci pro katalog určenou pro systémová metadata a identifikátory objektů (CATALOG_COLLATION).

Řazení katalogu v SQL databázi v Microsoft Fabric

Kolaci logického serveru v databázi SQL ve službě Fabric nemůžete změnit ani nastavit.

Ve výchozím nastavení je SQL_Latin1_General_CP1_CI_AS kolace databáze SQL v systému Fabric a nelze ji aktualizovat. Kolace jednotlivých sloupců jsou podporovány.