SR0016: избегайте использования префикса sp_ для хранимых процедур

Идентификатор RuleId

SR0016

Категория

Microsoft.Naming

Критическое изменение

Критическое изменение

Причина

Одна или несколько хранимых процедур имеют префикс sp_.

Описание правила

В SQL Server префикс sp_ обозначает системные хранимые процедуры. При использовании префикса для собственных хранимых процедур имя процедуры может конфликтовать с именем системной хранимой процедуры, которая может быть создана в будущем. В случае такого конфликта работа приложения, если оно ссылается на процедуру без указания ссылки по схеме, может быть нарушено. При этом имя привязывается к системной процедуре вместо процедуры пользователя.

Устранение нарушений

Чтобы устранить эту проблему, для обозначения сохраненных пользователем процедур необходимо заменить префикс sp_ другим префиксом или не использовать префикс вообще. Для обновления имен процедур, вызывающих предупреждения, можно выполнить рефакторинг базы данных. Этот процесс позволяет обновить не только имя каждой процедуры, но также и ссылки на процедуры во всем проекте базы данных. Дополнительные сведения см. в разделе Переименование всех ссылок на объект базы данных.

Отключение предупреждений

Если нет возможности изменить приложения, вызывающие хранимые процедуры, это предупреждение можно отключить.

Пример

В первом примере имя процедуры вызывает предупреждение. Во втором примере процедура использует префикс usp_ вместо префикса sp_, и предупреждение не появляется.

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

См. также

Основные понятия

Анализ кода базы данных с целью улучшения качества кода