버그 번호: 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 다운 그레이드할 업그레이드, 다음이 단계를 수행 합니다.
-
어셈블리 B 버전 1.0.0.0 폴더에 백업 합니다.
-
수정 하 고 B 어셈블리 2.0.0.0 버전을 다시 컴파일하십시오.
-
ALTER ASSEMBLY 문을 사용 하 여 SQL Server 2005에서 어셈블리 B 업그레이드.
-
수정 및 어셈블리 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 엽니다. 그런 다음 매니페스트 섹션 아래에 참조 된 어셈블리에 대 한 메타 데이터 정보를 확인 합니다.
-
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 =' 없기는 호환 업그레이드 합니다.강력한 이름의 어셈블리를 다운 그레이드 하려면 다음이 단계를 수행 합니다.
-
어셈블리에 종속 된 모든 개체를 삭제 합니다.
-
최신 버전의 어셈블리 삭제 하십시오.
-
이전 버전의 어셈블리를 만듭니다.
-
어셈블리에 종속 된 모든 필요한 개체를 만듭니다.
참고: 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