SR0016: evitare di utilizzare sp_ come prefisso per le stored procedure

RuleId

SR0016

Category

Microsoft.Naming

Breaking Change

Breaking

Causa

Una o più stored procedure presenta sp_ come prefisso.

Descrizione della regola

In SQL Server il prefisso sp_ contraddistingue le stored procedure di sistema. Se si utilizza questo prefisso per le stored procedure, il nome della procedura potrebbe entrare in conflitto con il nome di una stored procedure di sistema che verrà creata in futuro. Se si verifica un conflitto di questo tipo, le applicazioni che fanno riferimento alla procedura senza specificare il riferimento completo in base allo schema potrebbero subire interruzioni. In questo caso, il nome verrà associato alla procedura di sistema e non alla propria.

Come correggere le violazioni

Per risolvere il problema, è necessario sostituire sp_ con un prefisso diverso per le stored procedure utente oppure non utilizzare alcun prefisso. Considerare la possibilità di utilizzare il refactoring del database per aggiornare il nome di qualsiasi procedura che causa questo avviso. Tramite il refactoring del database, non solo è possibile aggiornare il nome di ogni procedura, ma anche qualsiasi riferimento ad essa nell'intero progetto di database. Per ulteriori informazioni, vedere Ridenominazione di tutti i riferimenti a un oggetto di database.

Esclusione di avvisi

È possibile evitare di visualizzare questo avviso se non è possibile modificare le applicazioni che chiamano la stored procedure.

Esempio

Nel primo esempio il nome della procedura causa questo avviso. Nel secondo la procedura utilizza il prefisso usp_ anziché sp_ e l'avviso non compare.

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

Vedere anche

Concetti

Analisi del codice di database per migliorare la qualità del codice