SQL Server 2012 и новее использует CLR 4.0, который, в свою очередь, привязан к .NET Framework версии 4.0 и выше.Нельзя использовать библиотеки .NET 2.0, 3.0 или 3.5 в SQL Server 2012 или более поздней версии.
System.Runtime.Serialization отсутствует в Поддерживаемых библиотеках .NET Framework список, поэтому вам нужно загрузить его вручную, а также UNSAFE
.Однако, если эта DLL-библиотека работает в смешанном режиме, а не на чистом MSIL, она не будет загружаться, поскольку хост CLR SQL Server работает только с чистыми библиотеками MSIL.Я нашел, что лучше всего просто использовать HttpWebRequest
и создать XML-запрос вручную и вручную проанализировать XML-ответ.
В прошлом DLL-библиотека ServiceModel была чисто MSIL и работала в SQLServer 2008 R2 (SQL Server 2005, 2008 и 2008 R2 привязаны к CLR 2.0), но затем Microsoft изменила эту библиотеку DLL на смешанный режим в CLR 4.0, и у всех, кто работал с компонентом WebService SQLCLR, работающим в 2008 R2, она перестала работатьобновление до SQL Server 2012 или новее.Использование HttpWebRequest
работает с «утвержденной» библиотекой, которая гарантированно всегда будет работать при всех обновлениях .NET Framework.
Здесь уже есть множество вопросов относительно этих проблем.Я постараюсь найти некоторые из них и дополнить их несколькими.
Кроме того, только FYI, вывод, показанный в вопросе, который, по-видимому, является результатом выполнения: SELECT * FROM sys.dm_clr_properties;
.Помните, что показанная «версия», хотя ее часто называют версией Framework, на самом деле является просто версией CLR, и эти две вещи не одно и то же.