Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Applies to:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric'te SQL analiz uç noktası
Microsoft Fabric'te Depo
Microsoft Fabric'te SQL veritabanı
Veritabanı nesne adı, tanımlayıcısıdır.
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. Çoğu nesne tanımlayıcı gerektirir, ancak kısıtlamalar gibi bazı nesneler bunları isteğe bağlı hale getirir.
Nesneyi tanımlarken bir nesne tanımlayıcısı oluşturursunuz. Nesneye başvurmak için tanımlayıcıyı kullanın. Ö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 adsız bir kısıtlama var. Birincil anahtar kısıtlaması kullanıcı tarafından belirtilen bir tanımlayıcıya sahip olmadığından sistem buna gibi PK__TableX__D7CB9CCCEEF0806Coluşturulan bir ad atar. Bu adı sys.key_constraints gibi sistem meta veri görünümlerinde görebilirsiniz.
Kısıtlama adları ve diğer şema kapsamı belirlenmiş nesneler veritabanı şeması içinde benzersiz olmalıdır. Örneğin, iki birincil anahtar kısıtlaması bir adı paylaşamaz. Ancak, sütun adlarının şema içinde değil yalnızca her tablo içinde benzersiz olması gerekir.
Tanımlayıcının harmanlanması, tanımlayıcıyı tanımladığınız düzeye bağlıdır.
Örneğin varsayılan harmanlaması, oturum açma bilgileri ve veritabanı adları gibi örnek düzeyindeki nesnelerin tanımlayıcılarına atanır.
Veritabanının varsayılan harmanlaması, veritabanındaki tablo, görünüm ve sütun adları gibi nesnelerin tanımlayıcılarına atanır. Örneğin, yalnızca büyük/küçük harfe duyarlı harmanlama içeren bir veritabanında farklı adlara sahip iki tablo oluşturabilirsiniz, ancak bunları büyük/küçük harfe duyarlı olmayan harmanlama içeren bir veritabanında oluşturamazsınız.
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 için biçim kurallarıyla uyumlu. Transact-SQL deyimlerinde kullanıldığında bunlar sınırlanmamıştır. Normal tanımlayıcıların normal tanımlayıcılar için kurallara uyması gerekir: Yalnızca harf, rakam ve belirli simgeleri (
_,@,#,$) içerebilirler, bir harfle veya , ,_velerinden@biriyle#başlamalıdırlar ve ayrılmış sözcük olamazlar.USE AdventureWorks2025; 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. Sınırlayıcılar, ayrılmış anahtar sözcükler, boşluklu adlar veya özel karakterler içeren adlar gibi normal tanımlayıcılar olarak geçersiz olabilecek adları kullanmanıza olanak sağlar. Normal tanımlayıcı kurallarına zaten uyumlu olan tanımlayıcılar da sınırlandırılabilir, ancak sınırlayıcılar bu durumda isteğe bağlıdır. Daha fazla bilgi için bkz. Sınırlandırılmış tanımlayıcılar için kurallar.USE AdventureWorks2025; GO SELECT * FROM [HumanResources].[Employee] --Delimiter is optional. WHERE [NationalIDNumber] = 153479919; --Delimiter is optional.
Normal tanımlayıcıların kurallarına uymayan tanımlayıcılar Transact-SQL deyiminde sınırlandırılmalıdır. Örneğin:
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.
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.
Sınırlandırılmış tanımlayıcılar için kurallar
Sınırlayıcı tanımlayıcılar, köşeli ayraçlar ([ ve ]) veya çift tırnak işareti (") içine alınır. Bunlar boşluklar, ayrılmış anahtar sözcükler ve normal tanımlayıcılarda izin verilmeyen özel karakterler de dahil olmak üzere herhangi bir karakter bileşimi içerebilir.
Köşeli ayraçla ayrılmış tanımlayıcılar
Köşeli parantezlerle sınırlanan tanımlayıcılar, köşeli parantezler ([ ve ]) içine alınır. Tanımlayıcının kendisi sağ köşeli ayraç(]) içeriyorsa, ikiye katlayarak (]]) ondan kaçının. Sol köşeli ayraç ([) kaçış gerektirmez.
Örneğin, adında köşeli ayraç bulunan bir tablo oluşturmak ve sorgulamak için:
-- 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
İşlev, QUOTENAME belirli bir dize için geçerli bir köşeli ayraçla ayrılmış tanımlayıcı döndürür ve kaçışı otomatik olarak işler:
SELECT QUOTENAME('abc[]def');
Önceki örnek döndürür [abc[]]def].
Çift tırnakla ayrılmış tanımlayıcılar
Çift tırnakla ayrılmış tanımlayıcılar çift tırnak içine alınır ("). Tanımlayıcının kendisi çift tırnak işareti içeriyorsa, ikiye katlayarak ("") kaçış işaretinden kurtulabilirsiniz.
Çift tırnak sınırlayıcıları, çoğu bağlantı için varsayılan olan SET QUOTED_IDENTIFIER ON'yi gerektirir.
QUOTED_IDENTIFIER
OFF olduğunda, Database Engine çift tırnaklı dizeleri tanımlayıcılar yerine dize değişmez değerleri olarak ele alır. Daha fazla bilgi için bkz. SET QUOTED_IDENTIFIER.
Örneğin, tanımlayıcı olarak ayrılmış anahtar sözcükleri kullanan bir tablo oluşturmak ve sorgulamak için:
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 köşeli ayraçla ayrılmış tanımlayıcıları etkilemez. Köşeli ayraç sınırlayıcıları her zaman ayardan QUOTED_IDENTIFIER bağımsız olarak çalışır.
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 bu kurallara uymalıdır.
İlk karakter aşağıdaki karakterlerden biri olmalıdır:
Unicode Standard 3.2 tarafından tanımlanan bir harf. Harflerin Unicode tanımı,
ailez,AileZve diğer dillerden gelen harf karakterlerini içerir.Alt çizgi (
_), et işareti (@) veya sayı işareti (#).Tanımlayıcının başındaki belirli simgelerin Database Engine ö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 uygulamadan kaçınmalısınız.Bazı Transact-SQL işlevlerin adları çift işaretlerle başlar (
@@). Bu işlevlerle karışıklığı önlemek için ile@@başlayan adları kullanmayın.
Sonraki karakterler aşağıdaki listeyi içerebilir:
Unicode Standart 3.2'de tanımlanan harfler.
Temel Latin veya diğer ulusal betiklerden gelen ondalık sayılar.
At işareti (
@), dolar işareti ($), sayı işareti (#) veya alt çizgi (_).
Tanımlayıcı Transact-SQL ayrılmış bir sözcük olmamalıdır. Database Engine 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ı kullandığınızda, çift tırnak işareti veya köşeli ayraç kullanarak bu kurallara uymayan tanımlayıcıları sınırlandırabilirsiniz. Ayrılmış sözcükler, veritabanı uyumluluk düzeyine bağlıdır. ALTER DATABASE uyumluluk düzeyi deyimini kullanarak veritabanı uyumluluk düzeyini ayarlayın.
Eklenmiş boşluklar veya özel karakterler kullanmayın.
Ek karakterler kullanmayın.
Transact-SQL deyimlerinde tanımlayıcıları kullandığınızda, çift tırnak işareti veya köşeli ayraç kullanarak bu kurallara uymayan tanımlayıcıları sınırlandırabilirsiniz. Bu kurallardan bazıları veritabanı uyumluluk düzeyine bağlı olarak değişir.
Azure SQL Veritabanı'de katalog harmanlaması
Azure SQL Veritabanı 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ı Azure portalında oluştururken her iki sıralama düzenini de bağımsız olarak belirtebilirsiniz, Transact-SQL (T-SQL) kullanarak CREATE DATABASE veya PowerShell kullanarak New-AzSqlDatabase.
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'daki SQL veritabanında katalog harmanlaması
Fabric'da sql veritabanının varsayılan harmanlaması SQL_Latin1_General_CP1_CI_AS'dir. Dağıtım zamanında farklı bir harmanlama yapılandırabilirsiniz, ancak veritabanı oluşturulduktan sonra bunu değiştiremezsiniz. Tek tek sütunlar kendi harmanlamalarını kullanabilir. Daha fazla bilgi için, Fabric'te SQL veritabanı oluşturma seçeneklerine bakın: Options to create a SQL database in Fabric.