CLR 루틴 실행 하거나 SQL Server 어셈블리를 사용할 때 오류 메시지: "호스트 저장소에서 어셈블리는 어셈블리와 다른 시그니처가 GAC에 있습니다. (HRESULT에서 예외: 0x80131050) "

기술 자료 번역 기술 자료 번역
기술 자료: 949080 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

다음 시나리오를 고려해 야 합니다.

시나리오 1

참조 하는 공용 언어 런타임 (CLR) 루틴을 만들 Microsoft.NET Framework 어셈블리입니다. .NET Framework 어셈블리에 문서화 되지 않았습니다. 기술 자료 문서 922672입니다. 그런 다음 .NET Framework 3.5 또는.NET Framework 2.0을 기반으로 하는 핫픽스를 설치합니다.

시나리오 2

어셈블리를 만들고 Microsoft SQL Server 데이터베이스에 어셈블리를 등록 하는 다음 합니다. 그런 다음 전역 어셈블리 캐시 (GAC) 다른 버전의 어셈블리를 설치합니다.

CLR 루틴 실행 하거나 SQL Server 어셈블리에서 이러한 시나리오 중 하나를 사용할 때 다음과 유사한 오류 메시지가 나타납니다.

서버: 메시지 6522, 수준 16, 상태 2, 줄 1
.NET Framework 사용자 정의 루틴 또는 집계를 실행 하는 동안 오류가 발생 했습니다. ' getsid':

System.IO.FileLoadException: 파일 또는 어셈블리를 로드할 수 없습니다. ' 대해서, 버전 2.0.0.0, Culture = = 중립, PublicKeyToken = b03f5f7f11d50a3a' 또는 해당 종속성 중 하나입니다. 호스트에서 어셈블리 저장소에 GAC에 어셈블리를 어셈블리와 다른 시그니처가 있습니다. (HRESULT에서 예외: 0x80131050)

System.IO.FileLoadException:

원인

CLR 어셈블리가 로드 될 때 CLR 동일한 어셈블리가 GAC에 있는지 확인 합니다. CLR은 동일한 어셈블리가 GAC에 있는지 여부를 확인합니다 는 이러한 어셈블리의 모듈 버전 Id (MVIDs)과 일치합니다. 경우 이러한 MVIDs 어셈블리 일치 하지 않는 경우와 같은 오류가 나타날 메시지를 "현상" 설명 섹션.

어셈블리를 다시 컴파일될 경우의 MVID는 어셈블리를 변경 합니다. 따라서,.NET Framework,.NET Framework 어셈블리를 업데이트 하는 경우 다른 MVIDs 있어야 합니다. 해당 어셈블리가 컴파일됩니다 때문입니다. 또한, if 사용자 고유의 어셈블리를 업데이트 하 고 어셈블리 다시 컴파일되도록 합니다. 따라서 어셈블리에 서로 다른도 가입니다.

해결 과정

해결 방법 1

1 "현상" 절에 시나리오를 해결 하려면 수동으로 SQL Server.NET Framework 어셈블리를 업데이트 해야 합니다. 이렇게 하려면 ALTER ASSEMBLY 문을 사용 합니다. 포인트 새 .NET Framework 어셈블리의 버전 다음 폴더:
%Windir%\Microsoft.NET\Framework\버전
참고버전 나타내는 여 .NET Framework 버전을 설치 또는 업데이트 합니다.

해결 방법 2

경우를 해결 하려면 2 인치 "현상" 섹션에서 ALTER ASSEMBLY 문을 사용 하 여 어셈블리를 업데이트 하려면 데이터베이스입니다.

그래도 문제가 지속 되는 경우 이렇게 하면 데이터베이스에서 어셈블리를 삭제 한 다음 등록 된 새 버전의 어셈블리 데이터베이스에 있습니다.

현재 상태

Microsoft 나열 된 제품에서 문제가 있음을 확인 했습니다. "적용 대상" 절에 있습니다.

추가 정보

기술 자료 문서 922672를 설명 하는.NET Framework 어셈블리를 사용 하는 것 하지 않는 것이 좋습니다. 기술 자료 문서 922672 SQL Server의 CLR 호스팅 환경에서 테스트 되는 어셈블리를 나열 합니다.

자세한 내용을 보시려면, Microsoft 기술 자료의 다음 문서 번호를 클릭합니다.
922672 SQL Server의 CLR 호스팅 환경에서 테스트 되지 않은.NET Framework 어셈블리에 대 한 지원 정책

CLR 루틴에 대 한

CLR 루틴 포함 다음 개체를 사용 하 여 구현 된 SQL Server.NET Framework CLR 통합:
  • 스칼라 반환 사용자 정의 함수 (스칼라 Udf)
  • 테이블 반환 사용자 정의 함수 (Tvf)
  • 사용자 정의 프로시저 (UDPs)
  • 사용자 정의 트리거
  • 사용자 정의 데이터 형식
  • 사용자 정의 집계

.NET Framework 3.5를 설치한 후 업데이트 하는 어셈블리

.NET Framework 3.5를 설치한 후 ALTER 를 사용 해야 어셈블리 문 다음 어셈블리를 업데이트 하려면:
  • Accessibility.dll
  • AspNetMMCExt.dll
  • Cscompmgd.dll
  • IEExecRemote.dll
  • IEHost.dll
  • IIEHost.dll
  • Microsoft.Build.Conversion.dll
  • Microsoft.Build.Engine.dll
  • Microsoft.Build.Framework.dll
  • Microsoft.Build.Tasks.dll
  • Microsoft.Build.Utilities.dll
  • Microsoft.CompactFramework.Build.Tasks.dll
  • Microsoft.JScript.dll
  • Microsoft.VisualBasic.Vsa.dll
  • Microsoft.Vsa.dll
  • Microsoft.Vsa.Vb.CodeDOMProcessor.dll
  • Microsoft_VsaVb.dll
  • Sysglobl.dll
  • System.Configuration.Install.dll
  • System.Design.dll
  • System.DirectoryServices.dll
  • System.DirectoryServices.Protocols.dll
  • System.Drawing.dll
  • System.Drawing.Design.dll
  • System.EnterpriseServices.dll
  • System.Management.dll
  • System.Messaging.dll
  • System.Runtime.Serialization.Formatters.Soap.dll
  • System.ServiceProcess.dll
  • System.Web.dll
  • System.Web.Mobile.dll
  • System.Web.RegularExpressions.dll
이러한 어셈블리는 다음 폴더에 있습니다.
%Windir%\Microsoft.NET\Framework\v2.0.50727

어셈블리 삭제 후 사용자 정의 데이터 형식에서 데이터를 보존 하는 방법

사용자 정의 데이터 형식에서 SQL Server 사용 하 여 어셈블리를 삭제할 경우 다음 방법 중 하나는 데이터 보존 사용할 수 있습니다.

다음 시나리오를 가정 합니다.
  • 이름이 어셈블리 만들기 MyAssembly.dll.
  • MyAssembly 어셈블리 참조는 System.DirectoryServices.dll 어셈블리입니다.
  • 사용자 정의 데이터 형식 이름이 있을 MyDateTime.
  • MyAssembly.dllMyDateTime 데이터 형식 사용 어셈블리입니다.
  • 이름이 MyTable 인 테이블을 만듭니다.
  • MyTable 테이블 데이터 MyDateTime 데이터를 포함합니다. 입력 합니다.

Bcp.exe 유틸리티를 사용 하는 방법 1:

  1. ? N 스위치와 함께 Bcp.exe 유틸리티를 사용 하 여 복사할 MyTable 테이블에 있는 파일의 데이터입니다. 예를 들어, 실행의 명령 프롬프트에서 다음 명령을:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n ?SSQLServerName  -T
  2. 에서 SQL Server Management Studio 이러한 단계를 수행 하십시오.
    1. MyTable 테이블을 삭제 합니다.
    2. MyDateTime 데이터 형식을 삭제 합니다.
    3. System.DirectoryServices.dll 삭제 어셈블리입니다.
    4. MyAssembly 어셈블리를 삭제 합니다.
  3. 에서 SQL Server Management Studio 이러한 단계를 수행 하십시오.
    1. System.DirectoryServices.dll 등록 어셈블리입니다.
    2. MyAssembly 어셈블리를 등록 합니다.
    3. MyDateTime 데이터 형식을 만듭니다.
    4. 동일한 테이블 구조 가진 새 테이블 만들기 MyTable 테이블입니다.
  4. ? N 스위치를 함께 Bcp.exe 유틸리티를 사용 합니다. MyTable 테이블에는 파일에서 데이터를 가져옵니다. 예를 들어, 실행의 명령 프롬프트에서 다음 명령을:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n ?SSQLServerName  -T

방법 2: 삽입 사용... SELECT 문

MyDateTime 데이터 형식의 저장소에서 9 바이트를 차지 하도록 가정 합니다.
  1. SQL Server Management Studio는 새 테이블을 만듭니다 다음을 실행 하 여 VARBINARY(9) 데이터 형식의 열을 포함 합니다. 문:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. 다음 실행 삽입... 선택 를 채우려면 문의 TempTable 테이블:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. 에서 SQL Server Management Studio 이러한 단계를 수행 하십시오.
    1. MyTable 테이블을 삭제 합니다.
    2. MyDateTime 데이터 형식을 삭제 합니다.
    3. System.DirectoryServices.dll 삭제 어셈블리입니다.
    4. MyAssembly 어셈블리를 삭제 합니다.
  4. 에서 SQL Server Management Studio 이러한 단계를 수행 하십시오.
    1. System.DirectoryServices.dll 등록 어셈블리입니다.
    2. MyAssembly 어셈블리를 등록 합니다.
    3. MyDateTime 데이터 형식을 만듭니다.
    4. 동일한 테이블 구조 가진 새 테이블 만들기 MyTable 테이블입니다.
  5. 다음 실행 삽입... 선택 를 채우려면 문의 MyTable 테이블:
    INSERT INTO MyTable SELECT c1 FROM TempTable

참조

어셈블리 버전에 대 한 자세한 내용은 참조 하십시오 있는 다음 Microsoft Developer Network (MSDN) 웹 사이트:
http://msdn2.microsoft.com/en-us/library/51ket42z (VS.80).aspx
에 대 한 어셈블리를 업데이트 하는 방법에 대 한 자세한 내용은 다음 MSDN 웹 방문 사이트:
http://msdn2.microsoft.com/en-us/library/ms186711.aspx
에 대 한 어셈블리를 삭제 하는 방법에 대 한 자세한 내용은 다음 MSDN 웹 방문 사이트:
http://msdn2.microsoft.com/en-us/library/ms177514.aspx
에 대 한 SQL Server 2005 데이터베이스에 어셈블리를 등록 하는 방법에 대 한 자세한 내용 다음 MSDN 웹 사이트를 방문 하십시오.
http://msdn2.microsoft.com/en-us/library/ms189524.aspx
에 대 한 Bcp.exe 유틸리티에 대 한 자세한 내용은 다음 MSDN 웹 사이트를 방문 하십시오.
http://msdn2.microsoft.com/en-us/library/ms162802.aspx

속성

기술 자료: 949080 - 마지막 검토: 2013년 1월 7일 월요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
키워드:?
kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:949080

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com