SR0016:避免使用 sp_ 做為預存程序的前置字元
RuleId |
SR0016 |
分類 |
Microsoft.Naming |
中斷變更 |
中斷 |
原因
一個或多個預存程序的前置詞為 sp_。
規則描述
在 SQL Server 中,前置詞 sp_ 會指定系統預存程序。 如果您的預存程序使用該前置詞,則預存程序的名稱可能與未來將建立的系統預存程序的名稱發生衝突。 發生這類衝突時,如果您的應用程式參考的程序並未透過結構描述限定參考,則可能會中斷。 在此情況下,名稱將繫結至系統程序而不是您的程序。
如何修正違規
若要解決此問題,您必須以不同的前置詞取代 sp_ 來指定使用者預存程序,或是完全不使用前置詞。 您應考慮使用「資料庫重構」(Database Refactoring) 更新造成此警告之任何程序的名稱。 使用資料庫重構不僅可讓您更新每個程序的名稱,還可更新整個「資料庫專案」(Database Project) 中該程序的任何參考。 如需詳細資訊,請參閱重新命名資料庫物件的所有參考。
隱藏警告的時機
如果您無法變更呼叫預存程序的應用程式,則可以隱藏這個警告。
範例
在第一個範例中,程序名稱將造成此警告出現。 在第二個範例中,程序是使用 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