Обновление сборок.NET уже в SQL Server

Нужно ли что-то делать после создания сборок.NET в SQL Server 2005, когда пакеты обновлений / исправлений ошибок.NET выпускаются MS, а затем устанавливаются с помощью обычных обновлений Microsoft? Является ли сборка SQL ссылкой на исходный файл.NET .dll или SQL Server использует свою личную копию?

2 ответа

Решение

Нужно ли что-то делать после создания сборок.NET в SQL Server 2005, когда пакеты обновлений / исправлений ошибок.NET выпускаются MS, а затем устанавливаются с помощью обычных обновлений Microsoft?

Это зависит. SQL Server CLR Integration не поддерживает каждую сборку.NET, см. Политику поддержки для непроверенных сборок.NET Framework в среде SQL Server, размещенной в среде CLR. Если вы ограничиваете себя поддерживаемыми сборками (ниже), вам не нужно ничего делать.

  • Microsoft.VisualBasic.dll
  • mscorlib.dll
  • System.Data.dll
  • System.dll
  • system.Xml.dll
  • Microsoft.VisualC.dll
  • CustomMarshalers.dll
  • System.Security.dll
  • System.Web.Services.dll
  • System.Data.SqlXml.dll
  • System.Transactions.dll
  • System.Data.OracleClient.dll
  • System.Configuration.dll

Однако, если вы ссылаетесь на непроверенную сборку, вы можете получить ошибку, потому что

Когда CLR загружает сборку, CLR проверяет, что такая же сборка находится в GAC. Если такая же сборка находится в GAC, CLR проверяет, совпадают ли идентификаторы версий модулей (MVID) этих сборок. Если MVID этих сборок не совпадают, вы получите сообщение об ошибке, которое упоминается в разделе "Проблема".

Когда сборка перекомпилируется, MVID сборки изменяется. Следовательно, если вы обновляете.NET Framework, сборки.NET Framework имеют разные MVID, потому что эти сборки перекомпилируются. Кроме того, если вы обновите свою сборку, сборка будет перекомпилирована. Поэтому сборка также имеет другой MVID.

Из сообщения об ошибке при выполнении процедуры CLR или использовании сборки в SQL Server 2005: "Сборка в хранилище хоста имеет подпись, отличную от сборки в GAC. (Исключение из HRESULT: 0x80131050)" http://support.microsoft.com/ кб / 949080

Если вы столкнулись с этим, все, что вам нужно сделать, это использовать инструкцию ALTER ASSEMBLY, чтобы переназначить новую сборку

Что мне нужно сделать, когда MS выпускает пакеты обновлений / исправлений.NET, а затем устанавливает их с помощью обычных обновлений Microsoft?

Нет. Исправления обычно применяются к самой среде выполнения, поэтому вам не нужно перестраивать свои сборки или что-либо еще.

Является ли сборка SQL ссылкой на исходный файл.NET .dll или SQL Server использует свою личную копию?

SQL Server хранит копии для себя, которые вы можете увидеть в sys.assembly_files Посмотреть.

Другие вопросы по тегам