Megosztás a következőn keresztül:


T-SQL-elnevezési problémák

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ha az adatbázisprojektben elemzi a T-SQL-kódot, egy vagy több figyelmeztetés elnevezési problémaként kategorizálható. A következő helyzetek elkerülése érdekében az elnevezési problémákat kell elhárítania:

  • Az objektumhoz megadott név ütközhet egy rendszerobjektum nevével.
  • A megadott nevet mindig feloldó karakterekben kell megadni (SQL Server, "[' és "").
  • A megadott név összezavarhat másokat, akik megpróbálják elolvasni és megérteni a kódot.
  • A kód megszakadhat, ha az SQL Server jövőbeli kiadásaival futtatja.

Általában mellőzheti az elnevezési problémát, ha más, nem módosítható alkalmazások az aktuális névtől függenek.

A megadott szabályok a következő elnevezési problémákat azonosítják:

SR0011: Ne használjon speciális karaktereket az objektumnevekben

Ha egy adatbázis-objektumot az alábbi táblázat bármely karakterével nevez el, megnehezíti nemcsak az objektumra való hivatkozást, hanem az objektum nevét tartalmazó kód olvasását is:

Character Description
Szóköz karakter
[ Bal oldali szögletes zárójel
] Jobb oldali szögletes zárójel
' Egyetlen idézőjel
" Dupla idézőjel

Szabálysértések kijavítása

A probléma megoldásához el kell távolítania az összes speciális karaktert az objektum nevéből. Ha az objektumra az adatbázisprojekt más helyei is hivatkoznak (például az adatbázisegység-tesztekben), a hivatkozások frissítéséhez adatbázis-újrabontást kell használnia. További információ: Minden hivatkozás átnevezése adatbázis-objektumra.

Example

Az első példában egy tábla egy olyan oszlopot tartalmaz, amelynek nevében egy speciális karakter szerepel. A második példában a név nem tartalmaz speciális karaktert.

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: Ne használjon fenntartott szavakat a típusnevekhez

Ne használjon fenntartott szót felhasználó által definiált típus neveként, mert az olvasók nehezebben ismerik az adatbázis kódját. Az SQL Serverben fenntartott szavakat csak akkor használhat azonosítóként és objektumnévként, ha tagolt azonosítókat használ. További információkért tekintse meg a fenntartott kulcsszavak teljes listáját.

Szabálysértések kijavítása

A felhasználó által definiált típust vagy objektumnevet át kell neveznie.

Example

Az első példa egy felhasználó által definiált típus definícióját mutatja be, amely aktiválja ezt a figyelmeztetést. A második példa bemutatja a felhasználó által definiált típus kijavításának és a probléma megoldásának egyik módját.

-- 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: Ne használja a sp_ előtagként a tárolt eljárásokhoz

Az SQL Serverben az sp_ előtag a rendszer által tárolt eljárásokat jelöli ki. Ha ezt az előtagot használja a tárolt eljárásokhoz, az eljárás neve ütközhet a jövőben létrehozandó rendszer által tárolt eljárás nevével. Ilyen ütközés esetén az alkalmazás megszakadhat, ha az alkalmazás az eljárásra hivatkozik anélkül, hogy séma alapján minősítené a hivatkozást. Ebben az esetben a név az eljárás helyett a rendszereljáráshoz kötődik.

Szabálysértések kijavítása

A probléma megoldásához le kell cserélnie sp_ egy másik előtagra a felhasználói tárolt eljárások kijelöléséhez, vagy egyáltalán nem szabad előtagot használnia.

Example

Az első példában az eljárás neve miatt ez a figyelmeztetés jelenik meg. A második példában az eljárás usp_ előtagot használ sp_ helyett, és elkerüli a figyelmeztetést.

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