20122012. 3. 15. 08:42

SQL Server 2008 환경에서 sp_xml_preparedocument 저장 프로시저가 실행될 때, 동적으로 msxmlsql.dll 파일을 로드하게 됩니다. 만약 해당 파일이 존재하지 않는다면 어떤 오류가 발생하는지 테스트를 통해 확인해 봅니다.

SQL Server 2008 R2 환경에서 msxmlsql.dll 파일은 기본적으로 아래 폴더에 위치합니다.
C:\Program Files\Microsoft SQL Server\100\Shared
해당 파일을 _msxmlsql.dll 파일로 rename 한 뒤 아래 스크립트를 실행합니다.

DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc = '
      <ROOT>
            <Microsoft>
            </Microsoft>
      </ROOT>'
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc

[수행결과]
Msg 6610, Level 16, State 1, Procedure sp_xml_preparedocument, Line 1
Failed to load Msxmlsql.dll.


실행 결과를 보면 msxmlsql.dll 파일을 찾지 못해 위와 같은 오류가 발생합니다.

다시 원래 상태로 msxmlsql.dll 을 rename 한 뒤 위 쿼리를 수행하면 정상적으로 쿼리가 수행된 것을 확인할 수 있으며 다음 DMV 를 통해 SQL Server 에 로드된 모듈을 확인할 수 있습니다.

select name, file_version, product_version from sys.dm_os_loaded_modules where name like '%msxmlsql%'

[수행결과]
c:\Program Files\Microsoft SQL Server\100\Shared\msxmlsql.dll 2009.100:1600.1 10.50:1600.1


해당 경로에 파일이 있는데도 오류가 발생한다면 Msg 6610 오류 발생 시, Dumptrigger 를 사용하여 덤프 수집 후 분석이 필요합니다.


작성자 : Lai Go / 작성일자 : 2012.03.15

Posted by Lai Go