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