확장 저장 프로시저 만들기
적용 대상:SQL Server
Important
이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 CLR 통합을 사용하십시오.
확장 저장 프로시저는 프로토타입을 사용하는 C/C++ 함수입니다.
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 전용 컴파일러 확장입니다. 컴파일러가 이 지시문을 지원하지 않는 경우 EXPORTS 섹션 아래의 DEF 파일에서 이 함수를 내보내야 합니다.
SQL Server가 추적 플래그 -T260으로 시작되거나 시스템 관리자 권한이 있는 사용자가 DBCC TRACEON(260)을 실행하고 확장 저장 프로시저 DLL이 __GetXpVersion()를 지원하지 않는 경우 경고 메시지(오류 8131: 확장 저장 프로시저 DLL '%'가 __GetXpVersion()를 내보내지 않습니다.) 오류 로그에 인쇄됩니다. (__GetXpVersion()는 두 개의 밑줄로 시작합니다.
확장 저장 프로시저 DLL이 __GetXpVersion()를 내보내지만 함수에서 반환된 버전이 서버에서 요구하는 버전보다 작으면 함수에서 반환된 버전과 서버에서 예상한 버전을 나타내는 경고 메시지가 오류 로그에 출력됩니다. 이 메시지가 표시되면 __GetXpVersion()에서 잘못된 값을 반환하거나 이전 버전의 srv.h로 컴파일합니다.
참고 항목
Microsoft Win32 함수인 SetErrorMode는 확장 저장 프로시저에서 호출해서는 안 됩니다.
장기 실행 확장 저장 프로시저는 연결이 중단되거나 일괄 처리가 중단된 경우 프로시저가 자체적으로 종료될 수 있도록 srv_got_attention 주기적으로 호출하는 것이 좋습니다.
확장 저장 프로시저 DLL을 디버그하려면 SQL Server\Binn 디렉터리에 복사합니다. 디버깅 세션의 실행 파일을 지정하려면 Microsoft SQL Server 실행 파일의 경로 및 파일 이름(예: C:\Program Files\Microsoft SQL Server\MSSQL13)을 입력합니다. MSSQLSERVER\MSSQL\Binn\Sqlservr.exe). sqlservr 인수에 대한 자세한 내용은 sqlservr Application을 참조 하세요.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기