Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Saat Anda menganalisis kode T-SQL dalam proyek database Anda, satu atau beberapa peringatan mungkin dikategorikan sebagai masalah penamaan. Anda harus mengatasi masalah penamaan untuk menghindari situasi berikut:
- Nama yang Anda tentukan untuk objek mungkin bertentangan dengan nama objek sistem.
- Nama yang Anda tentukan selalu perlu diapit dalam karakter escape (di SQL Server, '[' dan ']').
- Nama yang Anda tentukan mungkin membingungkan orang lain yang mencoba membaca dan memahami kode Anda.
- Kode mungkin rusak jika Anda menjalankannya dengan rilis SQL Server di masa mendatang.
Secara umum, Anda mungkin mengabaikan masalah penamaan jika aplikasi lain yang tidak bisa Anda ubah bergantung pada nama saat ini.
Aturan yang disediakan mengidentifikasi masalah penamaan berikut:
- SR0011: Hindari menggunakan karakter khusus dalam nama objek
- SR0012: Hindari menggunakan kata kunci yang terlarang untuk nama tipe
- SR0016: Hindari menggunakan sp_ sebagai awalan untuk prosedur tersimpan
SR0011: Hindari menggunakan karakter khusus dalam nama objek
Jika Anda memberi nama objek database dengan menggunakan karakter apa pun dalam tabel berikut, Anda membuatnya lebih sulit tidak hanya untuk mereferensikan objek tersebut tetapi juga untuk membaca kode yang berisi nama objek tersebut:
| Character | Description |
|---|---|
|
Karakter spasi kosong |
[ |
Kurung siku kiri |
] |
Kurung siku kanan |
' |
Tanda kutip tunggal |
" |
Tanda kutip ganda |
Cara memperbaiki pelanggaran
Untuk mengatasi masalah ini, Anda harus menghapus semua karakter khusus dari nama objek. Jika objek direferensikan di lokasi lain dalam proyek database Anda (seperti dalam pengujian unit database), Anda harus menggunakan pemfaktoran ulang database untuk memperbarui referensi. Untuk informasi selengkapnya, lihat Mengganti Nama Semua Referensi ke Objek Database.
Example
Dalam contoh pertama, tabel berisi kolom yang memiliki karakter khusus dalam namanya. Dalam contoh kedua, nama tidak berisi karakter khusus.
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: Hindari menggunakan kata yang dipesan untuk nama jenis
Anda harus menghindari penggunaan kata yang dipesan sebagai nama jenis yang ditentukan pengguna karena pembaca memiliki waktu yang lebih sulit untuk memahami kode database Anda. Anda dapat menggunakan kata cadangan di SQL Server sebagai pengidentifikasi dan nama objek hanya jika Anda menggunakan pengidentifikasi dengan pembatas. Untuk informasi selengkapnya, lihat daftar lengkap kata kunci yang dipesan.
Cara memperbaiki pelanggaran
Anda harus mengganti nama tipe atau nama objek yang ditentukan pengguna.
Example
Contoh pertama menunjukkan definisi untuk jenis yang ditentukan pengguna yang memicu peringatan ini. Contoh kedua menunjukkan salah satu cara untuk memperbaiki jenis yang ditentukan pengguna dan mengatasi masalah.
-- 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: Hindari menggunakan sp_ sebagai awalan untuk prosedur tersimpan
Di SQL Server, awalan sp_ menunjuk prosedur tersimpan sistem. Jika Anda menggunakan awalan tersebut untuk prosedur tersimpan, nama prosedur Anda mungkin bertentangan dengan nama prosedur tersimpan sistem yang akan dibuat di masa mendatang. Jika konflik seperti itu terjadi, aplikasi Anda mungkin rusak jika aplikasi Anda mengacu pada prosedur tanpa memenuhi syarat referensi berdasarkan skema. Dalam situasi ini, nama terhubung dengan prosedur sistem alih-alih prosedur Anda.
Cara memperbaiki pelanggaran
Untuk mengatasi masalah ini, Anda harus mengganti sp_ dengan awalan yang berbeda untuk menunjuk prosedur tersimpan pengguna, atau Anda tidak boleh menggunakan awalan sama sekali.
Example
Dalam contoh pertama, nama prosedur menyebabkan peringatan ini dikeluarkan. Dalam contoh kedua, prosedur menggunakan usp_ awalan alih-alih sp_ dan menghindari peringatan.
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