본문 바로가기

Web_Application/C#

[C#] Unable to load DLL 'SqlServerSpatial.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)



로컬 개발환경

Visual Studio 2017
SSMS 17.4
EntityFramework 6
Sql Server 2008R2
SqlServerTypes Package Installed

solution = web api , web site

서버 환경

web : Windows 2012R2
db : Sql Server 2008R2


로컬에서 개발 시에는 SqlServerSpatial.dll 관련 오류는 전혀 없었습니다. 운영환경에 web api를 올리면서 오류가 발생했고 무한 구글링이 시작됐습니다. 프로젝트에는 이미 SqlServerTypes 패키지가 설치된 상황이고 publish output directory 에도 Copy 가 되게 속성은 설정되어 있었습니다.

관련 오류 구글링에 가장 많이 걸리는 해결 방법으로는 프로젝트 폴더 속성에서 Copy Always로 바꾸라는 글이 많은데 이미 Copy if newer 속성이 설정되어 있으므로 상관없었습니다. 위 옵션이 설정 안되어 있어서 빌드 후 카피나 퍼블리시시 누락되는 경우라면 쉽게 해결 되겠지만 이번은 해당 사항이 없었습니다.

SqlSysCLR.msi 을 설치하라는 포스팅도 많아서 설치 했지만 해결 안됨.

프로젝트에는 dll 참조가 안될 환경이 없었으며 서버에도 설치되는 경로가 동일하므로 프로젝트 경로 문제는 아니라는 결론에 도달했고 로컬과 서버와의 환경차이를 비교하며 해결했는데

대상은

c:\Windows\System32
c:\Windows\SysWOW64

를 비교했습니다.

SqlServerSpatial.dll
SqlServerSpatial110.dll
SqlServerSpatial120.dll
SqlServerSpatial130.dll
SqlServerSpatial140.dll


c:\Windows\System32

System32.zip


c:\Windows\SysWOW64

SysWOW64.zip



공간데이터 취급 dll 의 경우 모듈을 못찾는다면 위의 dll 파일들의 누락이 원인입니다.

다행히 서버 c:\Windows\System32 에 SqlServerSpatial.dll 누락되어 발생한 에러 였습니다.

로컬 c:\Windows\System32 에서 대상 파일 복사 후 붙여넣기로 해결했습니다.

항상 해결책은 에러메세지에 있다는 걸 망각하고 구글링에 의존하다보니 삽질만 계속 했네요.



관련 오류로 많이 검색되는 포스팅 URL


http://yourneo.tistory.com/131

https://goo.gl/1dX6KZ

https://goo.gl/k3wpEhhttps://goo.gl/7OewbA