버그 번호: 490 (SQL 핫픽스)

요약

업그레이드 하거나 Microsoft SQL Server 2005 인스턴스 공용 언어 런타임 (CLR) 개체에 대 한 어셈블리를 다운 그레이드할 할 때 어셈블리의 메타 데이터에 참조 된 어셈블리의 버전을 변경할 수 없습니다. 또한, 강력한 이름의 어셈블리를 사용 하 여 CLR 개체에 대 한 어셈블리를 다운 그레이드할 수 없습니다 ALTER ASSEMBLY 문을 사용 하 여.

소개

업그레이드 또는 SQL Server 2005 인스턴스 CLR 개체에 대해 참조 된 어셈블리에 있는 어셈블리를 다운 그레이드 하는 방법을 설명 합니다.

자세한 내용

업그레이드 하거나 어셈블리를 다운 그레이드할 방법

SQL Server 2005에서 업그레이드 또는 강력한 이름을 사용 하 여 만들어지지 않은 독립 실행형 어셈블리를 다운 그레이드할 어셈블리 ALTER 문을 사용할 수 있습니다. 강력한 이름의 어셈블리에 대해 업그레이드할 수 있지만 어셈블리 ALTER ASSEMBLY 문을 사용 하 여 다운 그레이드할 수 없습니다.업그레이드 또는 다음 시나리오에서 어셈블리 다운 그레이드할 수 없습니다.

  • 어셈블리 A CLR 개체 인스턴스에 대해 만들어집니다. 어셈블리 A를 참조 된 어셈블리를 있습니다. 참조 된 어셈블리는 어셈블리 B.

  • 어셈블리 B에 참조 된 어셈블리가 있습니다.

  • B. 어셈블리의 다른 버전을 참조 하는 어셈블리를 다시 컴파일하면

이 시나리오에서 ALTER ASSEMBLY 문을 어셈블리 B 새 버전으로 업그레이드 하는 데 사용할 수 있습니다. 어셈블리 B 강력한 이름의 어셈블리가 아닌 경우에 이전 버전으로 어셈블리 B 또한 다운 그레이드할 수 있습니다. 그러나, 업그레이드 또는 다시 컴파일한 버전과 어셈블리 A 다운 그레이드할 수 ALTER ASSEMBLY 문을 사용할 수 없습니다.A. 어셈블리를 만들 때 SQL Server는 CLR fusion 정책을 만들기 때문에이 문제가 발생 이 CLR fusion 정책을 A 어셈블리 B. SQL Server 실제 버전을 업그레이드 하거나 일부 다른 버전으로 어셈블리 B를 다운 그레이드 하면 런타임에 B 어셈블리의 새 버전을 로드 하는 어셈블리의 메타 데이터에 어셈블리 B의 버전을 자동으로 매핑합니다. B. 어셈블리의 원래 버전을 어셈블리 A를 참조 하는 경우에이 문제가 발생 그러나 할 때 업그레이드 하거나 어셈블리 A 메타 데이터에서 어셈블리 B의 새 버전을 포함, ALTER ASSEMBLY 문을 실패 하 고 다음과 유사한 오류 메시지를 받을 경우 어셈블리 A 다운 그레이드할.

오류 메시지 1

메시지 6529, 수준 16, 상태 1, 줄 1! S 'RefAsm' 참조 된 어셈블리의 id가 변경 되었습니다. 버전, 이름 및 공개 키가 변경 되지 않았는지 확인 하십시오.

오류 메시지 2

메시지 6282, 수준 16, 상태 1, 줄 1참조 된 어셈블리가 변경 됩니다 ALTER ASSEMBLY에 실패 했습니다. 참조 된 어셈블리 목록은 동일 하 게 유지 해야 합니다.

업그레이드 하거나 어셈블리를 다운 그레이드할.

참고

  • 이러한 단계를 업그레이드 또는 "업그레이드 하거나 어셈블리를 다운 그레이드할 방법" 절에 설명 된 시나리오에서 어셈블리 A 다운 그레이드할.

  • 이 예제에서는 두 어셈블리의 버전 1.0.0.0 및 어셈블리를 모두는 가정에서 C# 기록 됩니다. 다음이 단계를 수행할 때 어셈블리 A 및 B 어셈블리 2.0.0.0 버전으로 업그레이드 하려고 합니다.

어셈블리 A 다운 그레이드할 업그레이드, 다음이 단계를 수행 합니다.

  1. 어셈블리 B 버전 1.0.0.0 폴더에 백업 합니다.

  2. 수정 하 고 B 어셈블리 2.0.0.0 버전을 다시 컴파일하십시오.

  3. ALTER ASSEMBLY 문을 사용 하 여 SQL Server 2005에서 어셈블리 B 업그레이드.

  4. 수정 및 어셈블리 A 2.0.0.0 버전으로 다시 컴파일해야 합니다. 이렇게 하면, 1 단계에서 만든 백업에서 어셈블리 B의 레퍼런스 버전 1.0.0.0. 이렇게 하려면 /reference 스위치와 함께 Csc.exe 컴파일러 도구를 사용 합니다. 예를 들어, 다음 명령을 사용 합니다.

    csc /target:library /out:는.dll 는.cs AssemblyInfo.cs /reference: "BackupFolder\AssemblyB.dll"참고: 어셈블리의 메타 데이터에서 어셈블리 B의 버전을 확인 하려면 Ildasm.exe 유틸리티를 사용 하 여 어셈블리 A 엽니다. 그런 다음 매니페스트 섹션 아래에 참조 된 어셈블리에 대 한 메타 데이터 정보를 확인 합니다.

  5. ALTER ASSEMBLY 문을 사용 하 여 업그레이드할 SQL Server 2005에서 어셈블리 A.

강력한 이름의 어셈블리를 다운 그레이드 하는 방법

강력한 이름의 어셈블리를 CLR 개체를 사용 하면 SQL Server 2005 어셈블리를 다운 그레이드할 수 어셈블리 ALTER 문을 사용 하 여 지원 하지 않습니다. ALTER ASSEMBLY 문을 사용 하 여 어셈블리의 버전을 다운 그레이드 하려고 하면 다음과 유사한 오류 메시지가 나타납니다.

메시지 6579, 수준 16, 상태 1, 줄 1어셈블리를 변경 ' Asm1, 버전 1.1.0.0, culture = = 중립, publickeytoken 등 3a52b896cff0513d, processorarchitecture = msil ='에 ' Asm1, 버전 1.0.0.0, culture = = 중립, publickeytoken 등 3a52b896cff0513d, processorarchitecture = msil =' 없기는 호환 업그레이드 합니다.

강력한 이름의 어셈블리를 다운 그레이드 하려면 다음이 단계를 수행 합니다.

  1. 어셈블리에 종속 된 모든 개체를 삭제 합니다.

  2. 최신 버전의 어셈블리 삭제 하십시오.

  3. 이전 버전의 어셈블리를 만듭니다.

  4. 어셈블리에 종속 된 모든 필요한 개체를 만듭니다.

참고: ALTER ASSEMBLY 문을 사용 하 여 강력한 이름의 어셈블리를 업그레이드할 수 있습니다. 그러나 업그레이드 참조 된 어셈블리를 경우 "업그레이드 또는 다운 그레이드 어셈블리" 절에 나열 된 단계를 그대로 따라야 합니다.

참조

ALTER ASSEMBLY 문에 대 한 자세한 내용은 다음 Microsoft Developer Network (MSDN) 웹 사이트를 방문 하십시오.

http://msdn2.microsoft.com/en-us/library/ms186711.aspxIldasm.exe 유틸리티에 대 한 자세한 내용은 다음 MSDN 웹 사이트를 방문 하십시오.

http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.