Microsoft SQL Server 2000 Standard Edition 버전에서 확장 저장 프로시저를 추가할때 전체 경로로 등록을 하면 DBCC dllname(FREE) 를 할 수 없습니다.
문제가 발생하는 상황은 아래와 같습니다.
2000 버전에서 아래와 같이 dll파일의 전체경로를 지정하여 확장 저장 프로시저를 추가합니다.
sp_addextendedproc 'xp_hello','c:\Program FIles\Test\xp_hello.dll'
GO
그리고 dll를 업데이트하기위에 dll를 서버에서 언로드합니다.
DBCC xp_hello(FREE)
GO
위와 같이 실행후 결과 메시지가 아래와 같이 정상적으로 처리되었다는 메시지가 출력됩니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.
그리고 실제로 dll파일을 교체하기위해 새 dll파일을 복사하려하면 오류가 발생합니다.
파일 또는 폴더 복사 오류
xp_hello 항목을 복사할 수 없습니다. 다른 사람이나 다른 프로그램에서 사용하고 있습니다.
사용중인 파일을 닫고 다시 시도하십시요.
원인은 DBCC dllname(FREE) 명령이 정상적으로 수행되지 않아서 dll이 서버 프로세스에서 언로드 되지 않아 발생한 문제입니다.
음 글쓰다가 찾아보니..
ms 홈페이지에 버그로 올라와 있네요..
아래글을 참고 하시는게 더 정확합니다.
http://support.microsoft.com/kb/300965 :
BUG: Freeing Dynamic-Linked Libraries (DLLs) Fails to Unload Them When a Path Is Specified