확장 저장 프로시저 만들기

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오. 대신 CLR 통합을 사용하십시오.

확장 저장 프로시저는 프로토타입이 다음과 같은 함수입니다.

SRVRETCODE xp_extendedProcName **(**SRVPROC *);

접두사 xp_는 필요에 따라 사용할 수 있습니다. 확장 저장 프로시저의 이름은 서버에 설치된 코드 페이지/정렬 순서에 관계없이 Transact-SQL 문에서 참조할 때는 대/소문자를 구분합니다. DLL을 빌드하는 경우 다음 작업을 수행합니다.

  • 진입점이 필요하면 DllMain 함수를 작성합니다.

    이 함수는 옵션입니다. 원본 코드에서 이 함수를 제공하지 않으면 컴파일러가 자체 버전에 연결하며 이 경우 아무 작업도 수행되지 않고 TRUE가 반환됩니다. DllMain 함수를 제공하면 스레드나 프로세스가 DLL에 연결되거나 DLL에서 분리될 때 운영 체제에서 이 함수를 호출합니다.

  • DLL 외부에서 호출된 모든 함수(모든 확장 저장 프로시저 Efunction)는 내보내야 합니다.

    함수를 내보내려면 .def 파일의 EXPORTS 섹션에서 해당 함수 이름을 나열하거나 원본 코드에서 Microsoft 컴파일러 확장인 __declspec(dllexport)을 함수 이름 앞에 추가합니다. 여기서 __declspec() 맨 앞의 밑줄은 두 개입니다.

확장 저장 프로시저 DLL을 만드는 데 필요한 파일은 다음과 같습니다.

파일

설명

Srv.h

확장 저장 프로시저 API 헤더 파일

Opends60.lib

Opends60.dll용 가져오기 라이브러리

확장 저장 프로시저 DLL을 만들려면 동적 연결 라이브러리 형식의 프로젝트를 만듭니다. DLL을 만드는 방법은 개발 환경 설명서를 참조하십시오.

모든 확장 저장 프로시저 DLL에서 다음 함수를 구현하고 내보내는 것이 좋습니다.

__declspec(dllexport) ULONG __GetXpVersion()
{
   return ODS_VERSION;
}

[!참고]

__declspec(dllexport)은 Microsoft 전용 컴파일러 확장입니다. 컴파일러에서 이 지시어를 지원하지 않으면 DEF 파일의 EXPORTS 섹션 아래에서 이 함수를 내보내야 합니다.

추적 플래그 -T260으로 SQL Server가 시작되었거나 시스템 관리자 권한이 있는 사용자가 DBCC TRACEON(260)을 실행하는데 확장 저장 프로시저 DLL이 __GetXpVersion()을 지원하지 않을 경우 경고 메시지 (오류 8131: 확장 저장 프로시저 DLL '%'이(가) __GetXpVersion()을 내보내지 않습니다.)가 오류 로그에 인쇄됩니다. 여기서 __GetXpVersion() 맨 앞의 밑줄은 두 개입니다.

확장 저장 프로시저 DLL이 __GetXpVersion()을 내보내지만 함수에서 반환하는 버전이 서버에 필요한 버전보다 낮을 경우 함수에서 반환한 버전과 서버에 필요한 버전을 알리는 경고 메시지가 오류 로그에 출력됩니다. 이 메시지가 표시되면 __GetXpVersion()에서 잘못된 값을 반환하고 있거나 이전 버전 srv.h를 사용하여 컴파일하고 있음을 나타냅니다.

[!참고]

Microsoft Win32 함수인 SetErrorMode는 확장 저장 프로시저 내에서 호출하지 않아야 합니다.

장기 실행 확장 저장 프로시저의 경우 연결이 끊기거나 일괄 처리가 중단될 경우 프로시저가 자동으로 종료될 수 있도록 주기적으로 srv_got_attention을 호출하는 것이 좋습니다.

확장 저장 프로시저 DLL을 디버깅하려면 DLL을 SQL Server\Binn 디렉터리에 복사합니다. 디버깅 세션에 사용할 실행 파일을 지정하려면 Microsoft SQL Server 실행 파일의 경로와 파일 이름을 입력합니다(예: C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe). sqlservr 인수에 대한 자세한 내용은 sqlservr 응용 프로그램을 참조하십시오.

참고 항목

참조

srv_got_attention(확장 저장 프로시저 API)