Megosztás a következőn keresztül:


Adatbázis-azonosítók

A következőre vonatkozik: SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-elemzési végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Az adatbázis-objektum neve annak azonosítója.

A kiszolgálók, adatbázisok és adatbázis-objektumok, például táblák, nézetek, oszlopok, indexek, eseményindítók, eljárások, korlátozások és szabályok azonosítókkal rendelkezhetnek. A legtöbb objektumhoz szükség van azonosítókra, de egyes objektumok, például a korlátozások nem kötelezőek.

Az objektum definiálásakor létre kell hoznia egy objektumazonosítót. Használja az azonosítót az objektumra való hivatkozáshoz. A következő utasítás például létrehoz egy táblát az azonosítóval TableX, valamint két oszlopot az azonosítókkal KeyCol és Descriptiona következőkkel:

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

Ez a tábla meg nem nevezett kényszert tartalmaz. Az elsődleges kulcskényszer nem rendelkezik felhasználó által megadott azonosítóval, ezért a rendszer létrehoz egy olyan nevet, mint a PK__TableX__D7CB9CCCEEF0806C. Ezt a nevet a rendszer metaadat-nézeteiben, például a sys.key_constraintsben láthatja.

A kényszerneveknek és más sémahatókörű objektumoknak egyedinek kell lenniük egy adatbázissémán belül. Például két elsődleges kulcskorlátozás nem oszthat meg nevet. Az oszlopneveknek azonban csak az egyes táblákban kell egyedinek lenniük, a sémán belül nem.

Az azonosítók sorrendbe állítása attól függ, hogy milyen szinten határozza meg.

  • A példány alapértelmezett rendezése példányszintű objektumok azonosítóihoz, például bejelentkezésekhez és adatbázisnevekhez van rendelve.

  • Az adatbázis alapértelmezett rendezése az adatbázis objektumazonosítóihoz, például táblákhoz, nézetekhez és oszlopnevekhez van rendelve. A kis- és nagybetűket megkülönböztető kollációval rendelkező adatbázisban létrehozhat például két táblát, amelyek neve csak a betűk kis- és nagybetűs formájában tér el, de a kis- és nagybetűt nem megkülönböztető kollációjú adatbázisban ezek nem hozhatók létre.

Note

A változók nevének, illetve a függvények és a tárolt eljárások paramétereinek meg kell felelniük Transact-SQL azonosítókra vonatkozó szabályoknak.

Azonosítóosztályok

Az azonosítóknak két osztálya van:

  • A rendszeres azonosítók megfelelnek az azonosítók formátumszabályainak. A Transact-SQL utasítások nem tagolják el őket. A normál azonosítóknak a normál azonosítókra vonatkozó szabályokat kell követniük: csak betűket, számjegyeket és bizonyos szimbólumokat (_, @, , #), $betűvel vagy egy _@#betűvel kell kezdeniük, és nem lehetnek fenntartott szavak.

    USE AdventureWorks2025;
    GO
    
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919;
    
  • A tagolt azonosítók idézőjelek (") vagy szögletes zárójelek ([ és ]) közé vannak zárva. A határolójelek lehetővé teszik olyan nevek használatát, amelyek egyébként érvénytelenek lennének normál azonosítóként, például fenntartott kulcsszavak, szóközökkel ellátott nevek vagy speciális karaktereket tartalmazó nevek. Azok az azonosítók is határolók használatával kezelhetők, amelyek megfelelnek a szokásos azonosító szabályoknak, de ebben az esetben a határolók használata nem kötelező. További információ: Szabályok a tagolt azonosítókhoz.

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

Az olyan azonosítókat, amelyek nem felelnek meg a normál azonosítókra vonatkozó szabályoknak, Transact-SQL utasításban kell elválasztani. Például:

USE AdventureWorks2025;
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.

A normál és a tagolt azonosítóknak 1–128 karakterből kell lenniük. Helyi ideiglenes táblák esetén az azonosító legfeljebb 116 karakter hosszúságú lehet.

A tagolt azonosítókra vonatkozó szabályok

A tagolt azonosítók szögletes zárójelek ([ és ]) vagy kettős idézőjelek (") közé helyezkednek el. A karakterek bármilyen kombinációját tartalmazhatják, beleértve a szóközöket, a fenntartott kulcsszavakat és a normál azonosítókban nem engedélyezett speciális karaktereket.

Szögletes zárójelben tagolt azonosítók

A szögletes zárójelekkel határolt azonosítók szögletes zárójelek közé vannak zárva ([ és ]). Ha maga az azonosító tartalmaz egy jobb oldali szögletes zárójelet (]), akkor azt duplázással (]]) tegye érvényessé. A bal oldali zárójel ([) nem igényel menekülést.

Például egy zárójeleket tartalmazó táblát hozhat létre és kérdezhet le:

-- Create a table with a ] character in its name.
CREATE TABLE [My]]Table]
(
    ID INT PRIMARY KEY
);
GO

-- Reference the table in a query.
SELECT *
FROM [My]]Table];
GO

A QUOTENAME függvény egy adott sztring érvényes zárójelelt azonosítóját adja vissza, és automatikusan kezeli a menekülést:

SELECT QUOTENAME('abc[]def');

Az előző példa a következőt adja [abc[]]def]vissza:

Dupla idézőjelekkel tagolt azonosítók

A kettős idézőjellel tagolt azonosítók idézőjelek (") közé kerülnek. Ha maga az azonosító tartalmaz dupla idézőjelet, azt kettőzze meg, hogy elkerülje ("").

A dupla idézőjeles elválasztók használata megköveteli a SET QUOTED_IDENTIFIER ON-t (a legtöbb kapcsolat esetében ez az alapértelmezett). Ha QUOTED_IDENTIFIEROFF, a Database Engine a kettős idézőjelű sztringeket sztringkonstansként kezeli azonosítók helyett. További információ: SET QUOTED_IDENTIFIER.

Például olyan tábla létrehozása és lekérdezése, amely fenntartott kulcsszavakat használ azonosítóként:

SET QUOTED_IDENTIFIER ON;
GO

-- Create a table using double-quote delimiters.
CREATE TABLE "My Table"
(
    "Order" INT NOT NULL,
    "Description" NVARCHAR (100)
);
GO

SELECT "Order",
       "Description"
FROM "My Table";
GO

Note

SET QUOTED_IDENTIFIER nincs hatással a szögletes zárójelben tagolt azonosítókra. A szögletes zárójelek mindig működnek a QUOTED_IDENTIFIER beállítástól függetlenül.

A normál azonosítókra vonatkozó szabályok

A változók, függvények és tárolt eljárások nevének követnie kell ezeket a szabályokat Transact-SQL azonosítók esetében.

  1. Az első karakternek a következő karakterek egyikének kell lennie:

    • A Unicode Standard 3.2 által meghatározott betű. A betűk Unicode szerinti definíciója tartalmaz latin karaktereket az a át z, A át Z, valamint más nyelvek betűkaraktereit is.

    • Az aláhúzásjel (_), az előjel (@) vagy a számjel (#).

      Az azonosító elején található egyes szimbólumok különleges jelentéssel rendelkeznek a Database Engine. A helyszíni előjellel kezdődő rendszeres azonosítók mindig helyi változót vagy paramétert jelölnek, és nem használhatók más típusú objektumok neveként. A számjellel kezdődő azonosító egy ideiglenes táblát vagy eljárást jelöl. A kettős számjellel (##) kezdődő azonosító globális ideiglenes objektumot jelöl. Bár a számjel vagy a kettős számjel karakterek használhatók más típusú objektumok nevének megkezdéséhez, kerülnie kell ezt a gyakorlatot.

      Egyes Transact-SQL függvények neve kettős keresztekkel kezdődik (@@). A függvényekkel való összetévesztés elkerülése érdekében ne használjon olyan neveket, amelyek a következővel @@kezdődnek: .

  2. A következő karakterek a következő listát tartalmazhatják:

    • A Unicode Standard 3.2-ben meghatározott betűk.

    • Decimális számok egyszerű latin vagy más nemzeti szkriptekből.

    • A kezdőjel (@), a dollárjel ($), a számjel (#) vagy az aláhúzásjel (_).

  3. Az azonosító nem lehet Transact-SQL által fenntartott szó. A Database Engine a fenntartott szavak nagybetűs és kisbetűs verzióit is lefoglalja. Ha Transact-SQL utasításokban használ azonosítókat, a szabályoknak nem megfelelő azonosítókat kettős idézőjelek vagy szögletes zárójelek használatával elválaszthatja. A fenntartott szavak az adatbázis kompatibilitási szintjétől függenek. Állítsa be az adatbázis kompatibilitási szintjét az ALTER DATABASE kompatibilitási szint utasításával.

  4. Ne használjon beágyazott szóközöket vagy speciális karaktereket.

  5. Ne használjon kiegészítő karaktereket.

Ha Transact-SQL utasításokban használ azonosítókat, a szabályoknak nem megfelelő azonosítókat kettős idézőjelek vagy szögletes zárójelek használatával elválaszthatja. Ezen szabályok némelyike az adatbázis kompatibilitási szintjétől függően változik.

Katalógus rendezése a Azure SQL Database

Nem módosíthatja vagy állíthatja be a logikai kiszolgáló rendezését az Azure SQL Database-en. Az egyes adatbázisok rendezési beállításait azonban külön konfigurálhatja az adatbázisban és a katalógusban lévő adatokhoz. A katalógus rendezése határozza meg a rendszer metaadatainak, például az objektumazonosítóknak a rendezést. Mindkét rendezést megadhatja egymástól függetlenül, ha az adatbázist az Azure portálon hozza létre, a Transact-SQL (T-SQL) utasítással a CREATE DATABASE, vagy a PowerShellben a New-AzSqlDatabase paranccsal.

További részletekért és példákért lásd: CREATE DATABASE. Adja meg az adatbázis (COLLATE) rendezési szabályait, valamint a rendszer metaadataihoz és objektumazonosítóihoz tartozó katalógus rendezési szabályait (CATALOG_COLLATION).

SQL-adatbázisok kollációja a Microsoft Fabricben

Az SQL-adatbázisok alapértelmezett rendezése a Fabric SQL_Latin1_General_CP1_CI_AS. Az üzembe helyezéskor más rendezést konfigurálhat, de az adatbázis létrehozása után nem módosíthatja. Az egyes oszlopok saját betűrendeket használhatnak. Az üzembe helyezési lehetőségekről a Lehetőségek SQL-adatbázis létrehozására Fabricben című témakörben talál további információt.