Номер ошибки: 490 (исправление SQL)

Обзор

При попытке обновить или возвратить сборки для среды выполнения (CLR) объект в экземпляре Microsoft SQL Server 2005, нельзя изменить версию сборок в метаданных сборки. Кроме того при использовании сборки со строгим именем для объекта среда CLR не может снизить сборки с помощью инструкции ALTER ASSEMBLY.

ВВЕДЕНИЕ

В этой статье описывается обновления или возврата к предыдущей версии сборки, которая содержит сборку для объектов среды CLR в экземпляре SQL Server 2005.

Дополнительные сведения

Как обновить или возвратить сборки

В SQL Server 2005 можно использовать инструкцию ALTER ASSEMBLY, чтобы обновить или возвратить отдельную сборку, которая не была создана со строгим именем. Сборки со строгими именами можно обновить, но нельзя понизить версию сборки с помощью инструкции ALTER ASSEMBLY.Не удается обновить или возвратить сборку в следующем сценарии:

  • Сборка A была создана для объектов среды CLR в экземпляре. Сборка A имеет ссылочную сборку. Сборка является сборкой б.

  • Сборка B имеет не сборка.

  • Перекомпилируйте сборку A для ссылки на другую версию сборки б.

В этом случае можно использовать инструкцию ALTER ASSEMBLY для обновления до новой версии сборки B. Если сборка B не является сборкой со строгим именем, можно также перейти к старой версии сборки B. Однако нельзя использовать инструкции ALTER ASSEMBLY для обновления или возврата к предыдущей версии сборки A повторная сборка версии.Это происходит потому, что SQL Server создает политику fusion среды CLR при создании сборки A. Эта политика fusion среды CLR автоматически отображает версию сборки B в метаданных сборки A к фактической версии сборки б SQL Server загружает новую версию сборки B во время выполнения, когда обновить или возвратить некоторые другие версии сборки B. Это происходит, даже если сборка A ссылается на исходную версию сборки б. Однако при попытке обновить или возвратить сборка A при сборке A содержит новую версию в метаданных сборки B, инструкция ALTER ASSEMBLY завершится ошибкой, и появляется сообщение об ошибке следующего вида:

Сообщение об ошибке 1

Сообщение 6529, уровень 16, состояние 1, строка 1ALTER ASSEMBLY выполнить не удалось из-за изменения удостоверения сборка «RefAsm». Убедитесь, что версия, имя и открытый ключ не изменились.

Сообщение об ошибке 2

Сообщение 6282, уровень 16, состояние 1, строка 1Сбой инструкции ALTER ASSEMBLY изменить указанные сборки. Сборка списка должны оставаться неизменными.

Обновить или возвратить сборки

Примечания

  • Эти действия обновить или возвратить сборка A в ситуации, которая была описана в разделе «Как обновить или возвратить сборку».

  • В этом примере предполагается, что версии двух сборок 1.0.0.0 и сборки записываются в C#. Выполните эти действия, при обновлении сборки A и сборка B до версии 2.0.0.0.

Чтобы обновить или возвратить сборки A, выполните следующие действия.

  1. Создайте резервную копию версии 1.0.0.0 сборки B с папкой.

  2. Изменение и затем перекомпилировать сборку B в версии 2.0.0.0.

  3. Используйте инструкцию ALTER ASSEMBLY для обновления сборки B в SQL Server 2005.

  4. Изменить, а затем повторно компилировать сборки A к версии 2.0.0.0. После этого, ссылка версии 1.0.0.0 сборки B из резервной копии, созданной на шаге 1. Чтобы сделать это, используйте средство компилятора Csc.exe с параметром/Reference . Например используйте следующую команду:

    / target: Library CSC/out: .cs AssemblyA.dllAssemblyAAssemblyInfo.cs/reference:»BackupFolder\AssemblyB.dll»Примечание. Чтобы проверить версию сборки B в метаданных сборки, откройте A сборки с помощью программы Ildasm.exe. Проверьте сведения о метаданных для указанной сборки в разделе МАНИФЕСТ .

  5. Используйте инструкцию ALTER ASSEMBLY для обновления сборки A в SQL Server 2005.

Как понизить версию сборки со строгими именами

При использовании сборки со строгим именем для объектов среды CLR в SQL Server 2005 не поддерживает с помощью инструкции ALTER ASSEMBLY для возврата к предыдущей версии сборки. При попытке перехода на предыдущую версию сборки с помощью инструкции ALTER ASSEMBLY, появляется сообщение об ошибке, подобное приведенному ниже:

Сообщение 6579, уровень 16, состояние 1, строка 1Изменить сборку из "Asm1, версия = 1.1.0.0, язык и региональные параметры нейтрального publickeytoken = = 3a52b896cff0513d processorArchitecture – = msil" для "Asm1, версии = 1.0.0.0, язык и региональные параметры нейтрального publickeytoken = = 3a52b896cff0513d processorArchitecture – = msil" не совместимость обновления.

При необходимости возврата к предыдущей версии сборки со строгим именем, выполните следующие действия.

  1. Удалите все объекты, зависящие от сборки.

  2. Удалите новую версию сборки.

  3. Создание более раннюю версию сборки.

  4. Создайте все необходимые объекты, зависящие от сборки.

Примечание. Сборки со строгими именами можно обновить с помощью инструкции ALTER ASSEMBLY. Однако если обновление включает в себя сборку, необходимо выполнить те же действия, перечисленные в разделе «Обновление или возврат к предыдущей версии сборки».

Ссылки

Дополнительные сведения об инструкции ALTER ASSEMBLY посетите следующий веб-узел Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/ms186711.aspxДополнительные сведения о служебной программе Ildasm.exe обратитесь на веб-узле MSDN:

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.