Aracılığıyla paylaş


Veritabanı tanımlayıcıları

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Veritabanı nesne adı tanımlayıcısı olarak adlandırılır. SQL Server'daki her şeyin bir tanımlayıcısı olabilir. Sunucular, veritabanları ve tablolar, görünümler, sütunlar, dizinler, tetikleyiciler, yordamlar, kısıtlamalar ve kurallar gibi veritabanı nesnelerinin tanımlayıcıları olabilir. Tanımlayıcılar çoğu nesne için gereklidir, ancak kısıtlamalar gibi bazı nesneler için isteğe bağlıdır.

Nesne tanımlandığında bir nesne tanımlayıcısı oluşturulur. Tanımlayıcı daha sonra nesneye başvurmak için kullanılır. Örneğin, aşağıdaki deyim, TableX tanımlayıcısına sahip bir tablo ve KeyCol ve Description tanımlayıcılarına sahip iki sütun oluşturur:

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

Bu tabloda da adsız bir kısıtlama vardır. Kısıtlamanın PRIMARY KEY tanımlayıcısı yok.

Tanımlayıcının harmanlanması, tanımlandığı düzeye bağlıdır. Oturum açma bilgileri ve veritabanı adları gibi örnek düzeyindeki nesnelerin tanımlayıcılarına, örneğin varsayılan harmanlaması atanır. Veritabanındaki tablolar, görünümler ve sütun adları gibi nesnelerin tanımlayıcılarına veritabanının varsayılan harmanlaması atanır. Örneğin, büyük/küçük harfe duyarlı harmanlama içeren bir veritabanında yalnızca büyük/küçük harfe göre farklı adlara sahip iki tablo oluşturulabilir; ancak büyük/küçük harfe duyarlı olmayan harmanlama içeren bir veritabanında oluşturulamaz.

Note

Değişkenlerin adları veya işlevlerin ve saklı yordamların parametreleri Transact-SQL tanımlayıcılarının kurallarına uymalıdır.

Tanımlayıcı sınıfları

İki tanımlayıcı sınıfı vardır:

  • Normal tanımlayıcılar, tanımlayıcıların biçimine ilişkin kurallara uyar. Normal tanımlayıcılar, Transact-SQL deyimlerinde kullanıldığında sınırlanmamıştır.

    USE AdventureWorks2022;
    GO
    
    SELECT *
    FROM HumanResources.Employee
    WHERE NationalIDNumber = 153479919;
    
  • Sınırlandırılmış tanımlayıcılar çift tırnak işareti (") veya köşeli ayraç ([ ve ]) içine alınır. Tanımlayıcıların biçimine yönelik kurallarla uyumlu tanımlayıcılar sınırlandırılmayabilir. Örneğin:

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

Tanımlayıcıların tüm kurallarıyla uyumlu olmayan tanımlayıcılar Transact-SQL deyiminde sınırlandırılmalıdır. Örneğin:

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.

Hem normal hem de sınırlandırılmış tanımlayıcılar 1 ile 128 karakter arasında olmalıdır. Yerel geçici tablolar için tanımlayıcı en fazla 116 karakter içerebilir.

Normal tanımlayıcılar için kurallar

Değişkenlerin, işlevlerin ve saklı yordamların adları, Transact-SQL tanımlayıcıları için aşağıdaki kurallara uymalıdır.

  1. İlk karakter aşağıdaki öğelerden biri olmalıdır:

    • Unicode Standard 3.2 tarafından tanımlanan bir harf. Harflerin Unicode tanımı, a ile z, A ile Z ve diğer dillerden gelen harf karakterlerini içerir.

    • Alt çizgi (_), et işareti (@) veya sayı işareti (#).

      Bir tanımlayıcının başındaki belirli simgelerin SQL Server'da özel bir anlamı vardır. at işaretiyle başlayan normal tanımlayıcı her zaman yerel değişkeni veya parametreyi belirtir ve başka bir nesne türünün adı olarak kullanılamaz. Sayı işaretiyle başlayan bir tanımlayıcı, geçici bir tablo veya yordamı belirtir. Çift sayı işaretleri (##) ile başlayan bir tanımlayıcı, genel bir geçici nesneyi belirtir. Diğer nesne türlerinin adlarını başlatmak için sayı işareti veya çift sayı işareti karakterleri kullanılabilse de, bu uygulamayı önermiyoruz.

      Bazı Transact-SQL fonksiyonlarının adları çift @ işaretiyle (@@) başlar. Bu işlevlerle karışıklığı önlemek için ile @@başlayan adları kullanmamalısınız.

  2. Sonraki karakterler aşağıdaki listeyi içerebilir:

    • Unicode Standart 3.2'de tanımlanan harfler.

    • Temel Latin veya diğer ulusal betiklerden ondalık sayılar.

    • At işareti (@), dolar işareti ($), sayı işareti (#) veya alt çizgi (_).

  3. Tanımlayıcı Transact-SQL ayrılmış bir sözcük olmamalıdır. SQL Server, ayrılmış sözcüklerin hem büyük hem de küçük harfli sürümlerini ayırır. Transact-SQL deyimlerinde tanımlayıcılar kullanıldığında, bu kurallara uymayan tanımlayıcılar çift tırnak işaretleri veya köşeli ayraçlarla sınırlandırılmalıdır. Ayrılmış sözcükler, veritabanı uyumluluk düzeyine bağlıdır. Bu düzey ALTER DATABASE uyumluluk düzeyi deyimi kullanılarak ayarlanabilir.

  4. Eklenmiş boşluklara veya özel karakterlere izin verilmez.

  5. Ek karakterlere izin verilmez.

Transact-SQL deyimlerinde tanımlayıcılar kullanıldığında, bu kurallara uymayan tanımlayıcılar çift tırnak işaretleri veya köşeli ayraçlarla sınırlandırılmalıdır.

Note

Normal tanımlayıcıların biçimine yönelik bazı kurallar veritabanı uyumluluk düzeyine bağlıdır. Bu düzey ALTER DATABASE uyumluluk düzeyi kullanılarak ayarlanabilir.

Azure SQL Veritabanı'nda katalog harmanlaması

Azure SQL Veritabanı'nda mantıksal sunucu harmanlamasını değiştiremez veya ayarlayamazsınız. Ancak, veritabanındaki veriler ve katalog için her veritabanının harmanlamalarını ayrı ayrı yapılandırabilirsiniz. Katalog harmanlaması, nesne tanımlayıcıları gibi sistem meta verileri için harmanlamayı belirler. Veritabanını CREATE DATABASEile T-SQL'de azure portalNew-AzSqlDatabaseile PowerShell'de oluşturduğunuzda her iki harmanlama da birbirinden bağımsız olarak belirtilebilir.

Ayrıntılar ve örnekler için bkz. CREATE DATABASE. Veritabanı (COLLATE) için bir harmanlama ve sistem meta verileri ve nesne tanımlayıcıları (CATALOG_COLLATION) için katalog harmanlaması belirtin.

Microsoft Fabric'te SQL veritabanında katalog harmanlama

Fabric'teki SQL veritabanında mantıksal sunucu karşılaştırmasını değiştiremez veya ayarlayamazsınız.

Şu anda, varsayılan olarak Fabric'teki SQL_Latin1_General_CP1_CI_AS bir SQL veritabanının sıralaması güncellenemez. Bireysel sütunlardaki sıralamalar desteklenir.