SQL Server에 확장 저장 프로시저 추가

적용 대상:SQL Server

Important

이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 CLR 통합을 사용하십시오.

확장 저장 프로시저 함수를 포함하는 DLL은 SQL Server에 대한 확장 역할을 합니다. DLL을 설치하려면 표준 SQL Server DLL 파일(C:\Program Files\Microsoft SQL Server\MSSQL12.0)이 포함된 디렉터리에 파일을 복사합니다.기본적으로 x\MSSQL\Binn).

확장 저장 프로시저 DLL이 서버에 복사된 후 SQL Server 시스템 관리자는 DLL의 각 확장 저장 프로시저 함수를 SQL Server에 등록해야 합니다. 이 작업은 sp_addextendedproc 시스템 저장 프로시저를 사용하여 수행됩니다.

Important

시스템 관리자는 확장 저장 프로시저를 철저히 검토하여 서버에 추가하고 다른 사용자에게 실행 권한을 부여하기 전에 유해하거나 악성 코드가 포함되어 있지 않은지 확인해야 합니다. 모든 사용자 입력에 대해 유효성을 검사합니다. 유효성을 검사하기 전에 사용자 입력을 연결하지 마세요. 유효성 검사가 수행되지 않은 사용자 입력으로부터 생성된 명령은 실행하지 마세요.

sp_addextendedproc의 첫 번째 매개 변수는 함수 이름을 지정하고 두 번째 매개 변수는 해당 함수가 있는 DLL의 이름을 지정합니다. DLL의 전체 경로를 지정하는 것이 좋습니다.

Important

전체 경로에 등록되지 않은 기존 DLL은 SQL Server 2005 이상으로 업그레이드한 후에는 작동하지 않습니다. 문제를 해결하려면 sp_dropextendedproc 사용하여 DLL의 등록을 취소한 다음 sp_addextendedproc 사용하여 전체 경로를 지정하여 다시 등록합니다.

지정된 sp_addextendedproc 함수의 이름은 DLL의 함수 이름과 대/소문자를 포함하여 정확히 동일해야 합니다. 예를 들어 이 명령은 이름이 xp_hello.dlldll에 있는 함수 xp_hello, 를 SQL Server 확장 저장 프로시저로 등록합니다.

sp_addextendedproc 'xp_hello', 'c:\Program Files\Microsoft SQL Server\MSSQL13.0.MSSQLSERVER\MSSQL\Binn\xp_hello.dll';  

지정된 sp_addextendedproc 함수의 이름이 DLL의 함수 이름과 정확히 일치하지 않으면 새 이름이 SQL Server에 등록되지만 이름을 사용할 수 없습니다. 예를 들어 SQL Server 확장 저장 프로시저xp_hello.dll로 등록되어 있지만 xp_Hello 나중에 함수를 호출하는 데 사용하는 xp_Hello 경우 SQL Server는 DLL에서 함수를 찾을 수 없습니다.

--Register the function (xp_hello) with an initial upper case  
sp_addextendedproc 'xp_Hello', 'c:\xp_hello.dll';  
  
--Use the newly registered name to call the function  
DECLARE @txt varchar(33);  
EXEC xp_Hello @txt OUTPUT;  
  
--This is the error message  
Server: Msg 17750, Level 16, State 1, Procedure xp_Hello, Line 1  
Could not load the DLL xp_hello.dll, or one of the DLLs it references. Reason: 127(The specified procedure could not be found.).  

지정된 sp_addextendedproc 함수의 이름이 DLL의 함수 이름과 정확히 일치하고 SQL Server 인스턴스의 데이터 정렬이 대/소문자를 구분하지 않는 경우 사용자는 이름의 소문자와 대문자 문자를 조합하여 확장 저장 프로시저를 호출할 수 있습니다.

--Register the function (xp_hello)  
sp_addextendedproc 'xp_hello', 'c:\xp_hello.dll';  
  
--The following will succeed in calling xp_hello  
DECLARE @txt varchar(33);  
EXEC xp_Hello @txt OUTPUT;  
  
DECLARE @txt varchar(33);  
EXEC xp_HelLO @txt OUTPUT;  
  
DECLARE @txt varchar(33);  
EXEC xp_HELLO @txt OUTPUT;  

SQL Server 인스턴스의 데이터 정렬이 대/소문자를 구분하는 경우 프로시저가 다른 경우로 호출되는 경우 DLL의 함수와 정확히 동일한 이름 및 데이터 정렬로 등록된 경우에도 SQL Server는 확장 저장 프로시저를 호출할 수 없습니다.

--Register the function (xp_hello)  
sp_addextendedproc 'xp_hello', 'c:\xp_hello.dll';  
  
--The following will result in an error  
DECLARE @txt varchar(33);  
EXEC xp_HELLO @txt OUTPUT;  
  
--This is the error  
Server: Msg 2812, Level 16, State 62, Line 1  

SQL Server를 중지하고 다시 시작할 필요는 없습니다.

참고 항목

sp_addextendedproc(Transact-SQL)
sp_dropextendedproc(Transact-SQL)