데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SQL 버전과 CLR (.NET Framework 버전에 따른 오류)

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server 2005 버전부터 CLR을 지원하고 있다. 최근 SQL Server 2012버전으로 업그레이드 후 CLR을 사용하는 시스템에서 다음과 같은 오류를 발견 할 수 있다.

 

Msg 6544, Level 16, State 1, Line 2

CREATE ASSEMBLY for assembly '<assembly name>' failed because assembly '<assembly name>' is malformed or not a pure .NET assembly. Unverifiable PE Header/native stub.

 

.NET 어셈블리에는 두 가지 유형이 있다. .NET 어셈블리는 MSIL 명령이 포함되어 있다. 혼합 어셈블리는 관리되지 않은 기계 명령어 및 MSIL 명령이 모두 포함되어 있다. 일반적으로 혼합 어셈블리로 컴파일 된 C++ 컴파일러를 CLR 스위치로 변경할 때 네이티브 코드로 인한 기계 명령어가 포함된다.

 

SQL Server는 버전에 관계 없이 .NET 어셈블리를 등록할 수 있다. SQL Server는 CREATE ASSEMBLY를 사용하여 SQL Server 데이터베이스에 로드 할 어셈블리 MSIL 명령어를 요구한다. 등록 할 어셈블리가 혼합 된 어셈블리의 경우 CREATE ASSEMBLY는 위와 같은 오류가 발생 한다.

 

SQL Server 2005, 2008, 2008r2 버전에서는 CLR 2.0을 사용한다. SQL Server 2012의 CLR 4.0 버전을 사용한다. 결과적으로 모든 .NET Framework 어셈블리 버전은 4.0에서 해야 한다.

 

.NET Framework 4.0 어셈블리는 WCF와 같은 혼합 모드 어셈블리를 참조한다. 따라서 지원 목록에 없는 .NET Framework 어셈블리를 사용하는 경우 업그레이드 후 CREATE ASSEMBLY 문을 사용하여 4.0 버전을 다시 등록해야 한다.

 

등록하려는 어셈블리가 순수 .NET 어셈블리가 아닌 경우 .NET Framework 의 모든 버전에서 발생 할 수 있다. 또한 새로운 버전의 어셈블리가 순수 하지 않은 .NET 어셈블리를 참조 할 수 있다. 이러한 상황에서 업그레이드 할 경우 오류와 함께 실패 한다.

 

 

[참고자료]

  • CSS SQL Server Engineers Team Blog :

http://blogs.msdn.com/b/psssql/archive/2013/02/23/unable-to-register-net-framework-assembly-not-in-the-supported-list.aspx

 

 

 

 

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1830 SQL Server 2012 Sp1 설치 이슈 및 해결 jevida(강성욱) 2016.09.30 1573
1829 SSD에서 DBCC CHECKDB 성능 벤치마킹 jevida(강성욱) 2016.09.30 1931
1828 Collation에 따른 ALTER DATABASE 실패 jevida(강성욱) 2016.09.30 1930
1827 LDF 파일이 잘리지 않는 이유 jevida(강성욱) 2016.09.30 2051
1826 Tempdb 경합 확인 및 해결 (Tempdb Contention) jevida(강성욱) 2016.09.30 2211
1825 SQL Server IO 병목 확인과 오해 jevida(강성욱) 2016.09.30 2497
1824 SQL Version에 따른 sp_prepare 정보 반환 jevida(강성욱) 2016.09.30 1711
1823 DReplay 활성 세션 초과 에러 jevida(강성욱) 2016.09.30 1542
1822 저장 프로시저 내 임시 테이블 사용과 프로시저 재컴파일 jevida(강성욱) 2016.09.30 1862
1821 NUMA 노드와 추척플래그 8048 jevida(강성욱) 2016.09.30 819
1820 온라인 인덱스 리빌드와 조각화 증가 jevida(강성욱) 2016.09.30 1602
1819 VARCHAR(MAX) and NTEXT 쿼리 성능 jevida(강성욱) 2016.09.30 4316
1818 CPU 리소스 상태에 따른 병렬 처리 제한 jevida(강성욱) 2016.09.30 1075
1817 매개변수 값의 변경과 SQL 서버 성능 저하 jevida(강성욱) 2016.09.30 1269
1816 IN 절 사용시 예기치 못한 액세스 위반과 SQL Server 종료 jevida(강성욱) 2016.09.30 1060
» SQL 버전과 CLR (.NET Framework 버전에 따른 오류) jevida(강성욱) 2016.09.30 1188
1814 SWITCHOFFSET 내장함수의 잘 못된 예측 - 미리 계산한 값을 쿼리에 연결하여 최적화 하기 jevida(강성욱) 2016.09.30 1311
1813 테이블 반환 매개변수 사용과 SQL 2012의 향상된 캐싱 기능 jevida(강성욱) 2016.09.30 1223
1812 디스크 섹터 크기와 데이터베이스 성능 jevida(강성욱) 2016.09.29 1635
1811 CLR 사용시 CPU 사용률 증가 현상 jevida(강성욱) 2016.09.29 1757





XE Login