SQL Server에서 저장 프로 시저를 그룹화하는 목적은 무엇입니까?


35

내가 처리해야 할 가장 복잡한 문제 중 하나는 저장 프로 시저 그룹과 관련이 있습니다. 저장 프로 시저가 주어지면 usp_DoSomethingAwesome을 호출하여 다른 그룹에서 해당 proc을 만들 수 있습니다 usp_DoSomethingAwesome;2.

시스템에서 생성 한 일부 삽입, 업데이트 및 삭제 복제 저장 프로 시저에서 발생하는 일부 복제 문제 (게시자 : SQL 2000 Ent., Dist / Sub : 2008 R2 Ent.)를 해결할 때이 문제를 발견했습니다.

이 "그룹화"기능을 갖는 목적 / 사고는 무엇입니까?

답변:


32

이것은 메서드를 오버로드하는 것과 같습니다. 본질적으로 저장 프로 시저의 두 가지 이상의 버전을 만들 수 있습니다. 각각의 저장 프로시 저는 서로 다른 수의 매개 변수를 사용하고 다른 테이블에서 작동하며 다른 출력을 갖는 등의 작업을 수행합니다.

번호 매기기 절차 라고 하며 절대적으로 사용되지 않습니다 ( 2005 년 이후 발표 ). 이들은 여전히 ​​SQL Server 2012에서 지원되지만 일부 기능은 제대로 작동하지 않습니다. 예를 들어, 이들은 포함 된 데이터베이스에서 격리 위반으로 간주되며 번호가 1보다 큰 프로시 저는 생성되지 않습니다.

메시지 12829, 수준 16, 상태 1, 프로 시저 blat, 줄 1
저장 프로 시저 'dbo.blat'는 번호가 매겨진 저장 프로 시저 그룹을 나타냅니다. 포함 된 데이터베이스에서는 번호가 매겨진 저장 프로 시저를 사용할 수 없습니다. 포함 된 데이터베이스에 대한 자세한 내용은 온라인 설명서 항목 포함 데이터베이스 이해를 참조하십시오.


5

저장 프로 시저를 그룹화하는 기능 (더 이상 사용되지 않음)은 단일 한 (그리고 오히려 어리석은) 목적, 즉 단일 DROP명령문을 통해 대량 삭제하는 기능으로 존재하는 것 같습니다 . 에 대한 SQL Server 2000의 MSDN 문서에 따르면, 저장 프로 시저 만들기 :

그룹화
프로시 저는 다른 식별 번호가 제공되는 경우 기존 스토어드 프로 시저와 동일한 이름으로 프로 시저를 작성하여 프로 시저를 논리적으로 그룹화 할 수 있습니다. 이름이 같은 그룹화 절차를 사용하면 동시에 삭제할 수 있습니다. 동일한 응용 프로그램에서 사용되는 절차는 종종 이런 방식으로 그룹화됩니다. 예를 들어, my_app 애플리케이션에 사용 된 프로 시저의 이름은 my_proc; 1, my_proc; 2 등일 수 있습니다 . 삭제 my_proc하면 전체 그룹을 삭제합니다. 프로 시저가 그룹화 된 후에는 그룹 내의 개별 프로 시저를 삭제할 수 없습니다.

동일한 기본 이름을 사용하더라도 과부하가 허용되지 않고 (서명은 고유하지 않아도되고 특정 "숫자"에 대한 자동 실행 라우팅이 필요하지 않음)이 구성을 사용하면 추가적인 이점이 없으므로 여전히 실행할 때 "숫자"를 사용하십시오. 따라서 "어리 석음"(그리고 아마도 너무 좋을 것입니다 ;-)의 결정.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.