SR0016:避免使用 sp_ 作为存储过程的前缀

规则 ID

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

请参见

概念

分析数据库代码以提高代码质量