Aracılığıyla paylaş


T-SQL adlandırma sorunları

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Veritabanı projenizdeki T-SQL kodunu analiz ettiğinizde, bir veya daha fazla uyarı adlandırma sorunları olarak kategorilere ayrılmış olabilir. Aşağıdaki durumlardan kaçınmak için adlandırma sorunlarını gidermeniz gerekir:

  • Bir nesne için belirttiğiniz ad, sistem nesnesinin adıyla çakışabilir.
  • Belirttiğiniz adın her zaman kaçış karakterleri içine alınması gerekir (SQL Server'da, '[' ve ']').
  • Belirttiğiniz ad, kodunuzu okumaya ve anlamaya çalışan diğer kişilerin kafasını karıştırabilir.
  • Sql Server'ın gelecek sürümleriyle çalıştırırsanız kod bozulabilir.

Değiştiremediğiniz diğer uygulamalar geçerli ada bağlıysa, genel olarak bir adlandırma sorununu görmezden gelebilirsiniz.

Sağlanan kurallar aşağıdaki adlandırma sorunlarını tanımlar:

SR0011: Nesne adlarında özel karakterler kullanmaktan kaçının

Bir veritabanı nesnesini aşağıdaki tabloda herhangi bir karakter kullanarak adlandırırsanız, yalnızca o nesneye başvurmayı değil, aynı zamanda o nesnenin adını içeren kodu okumayı da daha zor hale getirirsiniz:

Character Description
Boşluk karakteri
[ Sol köşeli ayraç
] Sağ köşeli ayraç
' Tek tırnak işareti
" Çift tırnak işareti

İhlalleri düzeltme

Bu sorunu çözmek için nesne adından tüm özel karakterleri kaldırmanız gerekir. Nesneye veritabanı projenizdeki diğer konumlarda (veritabanı birim testlerinde olduğu gibi) başvuruda bulunursa, başvuruları güncelleştirmek için veritabanı yeniden düzenlemesini kullanmanız gerekir. Daha fazla bilgi için bkz. Tüm Başvuruları Veritabanı Nesnesine Yeniden Adlandırma.

Example

İlk örnekte, bir tablo adında özel bir karakter bulunan bir sütun içerir. İkinci örnekte, ad özel bir karakter içermiyor.

CREATE TABLE [dbo].[TableWithProblemColumn]
(
[ID] INT NOT NULL IDENTITY(0, 1),
[Small'String] VARCHAR(10)
)
ON [PRIMARY]

CREATE TABLE [dbo].[FixedTable]
(
[ID] INT NOT NULL IDENTITY(0, 1),
[SmallString] VARCHAR(10)
)
ON [PRIMARY]

SR0012: Tür adları için ayrılmış sözcükler kullanmaktan kaçının

Okuyucular veritabanı kodunuzu anlamakta zorlandığından, kullanıcı tanımlı bir türün adı olarak ayrılmış bir sözcük kullanmaktan kaçınmalısınız. SQL Server'da ayrılmış sözcükleri tanımlayıcılar ve nesne adları olarak yalnızca sınırlandırılmış tanımlayıcılar kullanıyorsanız kullanabilirsiniz. Daha fazla bilgi için ayrılmış anahtar sözcüklerin tam listesine bakın.

İhlalleri düzeltme

Kullanıcı tanımlı türü veya nesne adını yeniden adlandırmanız gerekir.

Example

İlk örnek, bu uyarıyı tetikleyen kullanıcı tanımlı bir türün tanımını gösterir. İkinci örnek, kullanıcı tanımlı türü düzeltmenin ve sorunu çözmenin bir yolunu gösterir.

-- Potential misuse of a keyword as a type name
CREATE TYPE Alter
FROM nvarchar(11) NOT NULL;

-- Corrected type name
CREATE TYPE AlterType
FROM nvarchar(11) NOT NULL;

SR0016: Saklı yordamlar için ön ek olarak sp_ kullanmaktan kaçının

SQL Server'da sp_ ön eki, sistem saklı yordamlarını belirtir. Saklı yordamlarınız için bu ön eki kullanırsanız, yordamınızın adı gelecekte oluşturulacak bir sistem saklı yordamının adıyla çakışabilir. Böyle bir çakışma oluşursa, uygulamanız şema ile referansı belirtmeden işleme atıfta bulunuyorsa çalışmayabilir. Bu durumda ad, prosedürünüz yerine sistem prosedürüne bağlanır.

İhlalleri düzeltme

Bu sorunu çözmek için, sp_'yi farklı bir ön ekle değiştirerek kullanıcı saklı yordamlarını atayabilir veya hiç ön ek kullanmayabilirsiniz.

Example

İlk örnekte, yordam adı bu uyarının verilmesine neden olur. İkinci örnekte yordam, usp_ yerine bir sp_ ön ek kullanır ve uyarıyı önler.

CREATE PROCEDURE [dbo].[sp_procWithWarning]
(
@Value1 INT,
)
AS
BEGIN
-- Additional statements here
RETURN 0;
END

CREATE PROCEDURE [dbo].[usp_procFixed]
(
@Value1 INT,
)
AS
BEGIN
-- Additional statements here
RETURN 0;
END