Обновление сборок.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.
Если вы столкнулись с этим, все, что вам нужно сделать, это использовать инструкцию ALTER ASSEMBLY, чтобы переназначить новую сборку
Что мне нужно сделать, когда MS выпускает пакеты обновлений / исправлений.NET, а затем устанавливает их с помощью обычных обновлений Microsoft?
Нет. Исправления обычно применяются к самой среде выполнения, поэтому вам не нужно перестраивать свои сборки или что-либо еще.
Является ли сборка SQL ссылкой на исходный файл.NET .dll или SQL Server использует свою личную копию?
SQL Server хранит копии для себя, которые вы можете увидеть в sys.assembly_files
Посмотреть.