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.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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
- SR0012: Tür adları için ayrılmış sözcükler kullanmaktan kaçının
- SR0016: Depolanmış yordamlar için ön ek olarak sp_ kullanmaktan kaçının
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
İlgili içerik
- Kod kalitesini geliştirmek için SQL kod analizini
- T-SQL tasarım sorunları
- T-SQL performans sorunları
- hataları bulmak için T-SQL kodunu analiz