SR0016: sp_ als Präfix für gespeicherte Prozeduren vermeiden

Regel-ID

SR0016

Kategorie

Microsoft.Naming

Unterbrechende Änderung

Breaking

Ursache

Eine oder mehrere gespeicherten Prozeduren haben sp_ als Präfix.

Regelbeschreibung

In SQL Server werden gespeicherte Systemprozeduren durch das sp_-Präfix festgelegt. Wenn Sie dieses Präfix für die gespeicherten Prozeduren verwenden, kann der Name der Prozedur einen Konflikt mit dem Namen einer auf dem System gespeicherten Prozedur auslösen, die zu einem späteren Zeitpunkt erstellt wird. Im Fall eines solchen Konflikts wird die Anwendung möglicherweise unterbrochen, wenn sie auf die Prozedur verweist, ohne diesen Verweis nach Schema zu qualifizieren. Der Name wird dann an die Systemprozedur und nicht an Ihre Prozedur gebunden.

Behandeln von Verstößen

Zur Behebung dieses Problems müssen Sie sp_ durch ein anderes Präfix ersetzen, um vom Benutzer gespeicherte Prozeduren festzulegen, oder Sie dürfen überhaupt kein Präfix verwenden. Es empfiehlt sich, den Namen aller Prozeduren mit dieser Warnung mithilfe von Datenbankumgestaltung zu aktualisieren. Mit einer Datenbankumgestaltung können Sie nicht nur die Namen aller Prozeduren, sondern auch alle Verweise auf diese Prozedur im gesamten Datenbankprojekt aktualisieren. Weitere Informationen finden Sie unter Umbenennen aller Verweise auf ein Datenbankobjekt.

Wann sollten Warnungen unterdrückt werden?

Sie können diese Warnung unterdrücken, wenn Sie die Anwendungen, die die gespeicherte Prozedur aufrufen, nicht ändern können.

Beispiel

Im ersten Beispiel wird aufgrund des Prozedurnamens diese Warnung ausgegeben. Im zweiten Beispiel wird für die Prozedur ein usp_-Präfix anstelle des sp_-Präfixes verwendet, sodass keine Warnung ausgegeben wird.

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

Siehe auch

Konzepte

Analysieren von Datenbankcode zum Verbessern der Codequalität