Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Wanneer u de T-SQL-code in uw databaseproject analyseert, kunnen een of meer waarschuwingen worden gecategoriseerd als naamgevingsproblemen. U moet naamgevingsproblemen oplossen om de volgende situaties te voorkomen:
- De naam die u voor een object hebt opgegeven, kan conflicteren met de naam van een systeemobject.
- De naam die u hebt opgegeven, moet altijd tussen escapetekens (in SQL Server, [' en ']').
- De naam die u hebt opgegeven, kan anderen verwarren die proberen uw code te lezen en te begrijpen.
- De code kan worden verbroken als u deze uitvoert met toekomstige releases van SQL Server.
Over het algemeen kunt u een naamgevingsprobleem onderdrukken als andere toepassingen die u niet kunt wijzigen, afhankelijk zijn van de huidige naam.
De opgegeven regels identificeren de volgende naamgevingsproblemen:
- SR0011: Vermijd het gebruik van speciale tekens in objectnamen
- SR0012: Vermijd het gebruik van gereserveerde woorden voor typenamen
- SR0016: Vermijd het gebruik van sp_ als voorvoegsel voor opgeslagen procedures
SR0011: Vermijd het gebruik van speciale tekens in objectnamen
Als u een databaseobject een naam geeft met behulp van een willekeurig teken in de volgende tabel, maakt u het niet alleen moeilijker om naar dat object te verwijzen, maar ook om code te lezen die de naam van dat object bevat:
Karakter | Beschrijving |
---|---|
|
Spatieteken |
[ |
Vierkante haak links |
] |
Rechter vierkante haak |
' |
Enkel aanhalingsteken |
" |
Dubbel aanhalingsteken |
Hoe schendingen op te lossen
U kunt dit probleem oplossen door alle speciale tekens uit de objectnaam te verwijderen. Als naar het object wordt verwezen op andere locaties in uw databaseproject (zoals in tests voor database-eenheden), moet u databaseherstructurering gebruiken om de verwijzingen bij te werken. Zie Alle verwijzingen naar een databaseobject hernoemen voor meer informatie.
Voorbeeld
In het eerste voorbeeld bevat een tabel een kolom met een speciaal teken in de naam. In het tweede voorbeeld bevat de naam geen speciaal teken.
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: Vermijd het gebruik van gereserveerde woorden voor typenamen
Vermijd het gebruik van een gereserveerd woord als de naam van een door de gebruiker gedefinieerd type, omdat lezers moeite hebben om uw databasecode te begrijpen. U kunt gereserveerde woorden in SQL Server alleen gebruiken als id's en objectnamen als u gescheiden id's gebruikt. Zie de volledige lijst met gereserveerde trefwoorden voor meer informatie.
Hoe schendingen op te lossen
U moet de naam van het door de gebruiker gedefinieerde type of objectnaam wijzigen.
Voorbeeld
In het eerste voorbeeld ziet u de definitie voor een door de gebruiker gedefinieerd type dat deze waarschuwing activeert. In het tweede voorbeeld ziet u één manier om het door de gebruiker gedefinieerde type te corrigeren en het probleem op te lossen.
-- 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: Vermijd het gebruik van sp_ als voorvoegsel voor opgeslagen procedures
In SQL Server wijst het sp_
voorvoegsel opgeslagen procedures voor het systeem aan. Als u dat voorvoegsel gebruikt voor uw opgeslagen procedures, kan de naam van uw procedure conflicteren met de naam van een systeem opgeslagen procedure die in de toekomst wordt gemaakt. Als er een dergelijk conflict optreedt, kan uw applicatie problemen ondervinden als uw toepassing verwijst naar de procedure zonder de verwijzing naar het schema te specificeren. In dit geval wordt de naam gekoppeld aan de systeemprocedure in plaats van aan uw procedure.
Hoe schendingen op te lossen
Om dit probleem op te lossen, moet u sp_
vervangen door een ander voorvoegsel om opgeslagen gebruikersprocedures aan te wijzen, of helemaal geen voorvoegsel gebruiken.
Voorbeeld
In het eerste voorbeeld zorgt de naam van de procedure ervoor dat deze waarschuwing wordt uitgegeven. In het tweede voorbeeld gebruikt de procedure een usp_
voorvoegsel in plaats van sp_
en voorkomt de waarschuwing.
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
Verwante inhoud
- SQL-codeanalyse om de kwaliteit van code te verbeteren
- problemen met T-SQL-ontwerp
- prestatieproblemen met T-SQL
- T-SQL-code analyseren om defecten te vinden