IT정보공유/C#

처음보는 희한한 에러가 발생 PERMISSION_SET = EXTERNAL_ACCESS

알지오™ 2017. 6. 6.

C# 개발자로서 경력이 어느정도 되는데 생전 처음 보는 에러가 발생했습니다.

프로그램을 업데이트 한 것도 아니고 다른 문제처리중에 파생된 문제점이라 

처음엔 뭐가 이상한지도 모르고 한참을 해메다가

프로그램을 디버그 모드로 돌리는 중에 아래 메세지가 뜨더군요. 지속적으로.



어셈블리 ID 65538을(를) 로드하는 동안 Microsoft .NET Framework에서 오류가 발생했습니다. 서버의 리소스가 부족하거나 어셈블리가 PERMISSION_SET = EXTERNAL_ACCESS 또는 UNSAFE로 트러스트되지 않은 것 같습니다. 쿼리를 다시 실행하거나 설명서에서 어셈블리 트러스트 문제를 해결하는 방법을 참조하십시오. 이 오류에 대한 자세한 내용은 다음을 참조하십시오: 


System.IO.FileLoadException: 파일이나 어셈블리 'echelonclientext, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 예외가 발생한 HRESULT: 0x80FC3C2C

System.IO.FileLoadException: 

블라블라~


해당 에러에 대해서는 아래 사이트를 한번 참고해 보시고, 

http://weblogs.sqlteam.com/tarad/archive/2009/09/21/Fix-for-CLR-object-execution-error-after-attachrestore-in-SQL.aspx


https://stackoverflow.com/questions/7034969/sql-server-stops-loading-assembly

여러 사이트를 둘러본 결과 아래의 결론에 도달했습니다. 


USE master GO ALTER DATABASE dbNameGoesHere SET TRUSTWORTHY ON USE dbNameGoesHere GO EXEC sp_changedbowner 'sa'


데이터베이스의 TRUSTWORTHY를 ON으로 만들어 주고

(마스터 DB로서의 역할을 하라는 뜻으로 이해함)

DB의 권한을 sa로 줘라. 

그러면 해결될 것이다.

(실제로 문제가 발생한 DB의 경우 DB 소유자가 윈도우 계정인 Administrator로 지정되어져 있었습니다.)


추가로 현재 DB의 TRUSTWORTHY 상태를 확인 하는 방법도 안내해 드립니다.


 SELECT name, database_id, is_trustworthy_on FROM sys.databases


잘 해결되시길 바랍니다.

PS. DB 이중화와 관련되어진 문제일 수 있습니다. 


댓글

💲 추천 글