SR0016: 저장 프로시저에는 sp_를 접두사로 사용하지 마십시오.
규칙 ID |
SR0016 |
범주 |
Microsoft.Naming |
변경 수준 |
주요 변경 |
원인
하나 이상의 저장 프로시저에 sp_ 접두사가 있습니다.
규칙 설명
SQL Server에서 sp_ 접두사는 시스템 저장 프로시저를 지정합니다. 저장 프로시저에 이 접두사를 사용하면 해당 프로시저의 이름이 이후에 만들어지는 시스템 저장 프로시저의 이름과 충돌할 수 있습니다. 이러한 충돌이 발생하면 응용 프로그램에서 해당 프로시저를 참조할 때 참조를 스키마로 한정하지 않을 경우 응용 프로그램이 중단될 수 있습니다. 이러한 경우 해당 이름은 사용자 저장 프로시저 대신 시스템 프로시저에 바인딩됩니다.
위반 문제를 해결하는 방법
이 문제를 해결하려면 sp_를 다른 접두사로 바꿔 사용자 저장 프로시저를 지정하거나 접두사를 전혀 사용하지 않아야 합니다. 데이터베이스 리팩터링을 사용하여 이 경고를 발생시킨 프로시저의 이름을 업데이트하는 것이 좋습니다. 데이터베이스 리팩터링을 사용하면 데이터베이스 프로젝트 전체에서 각 프로시저의 이름뿐만 아니라 해당 프로시저에 대한 모든 참조도 업데이트할 수 있습니다. 자세한 내용은 데이터베이스 개체에 대한 모든 참조 이름 바꾸기을 참조하십시오.
경고를 표시하지 않는 경우
저장 프로시저를 호출하는 응용 프로그램을 변경할 수 없는 경우 이 경고를 표시하지 않을 수 있습니다.
예제
첫 번째 예제에서는 프로시저 이름으로 인해 이 경고가 발생합니다. 두 번째 예제에서는 프로시저에 sp_ 대신 usp_ 접두사를 사용하여 경고가 표시되지 않습니다.
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