Сборка проекта SQL CLR в Visual Studio 2015 - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь создать проект SQL CLR в Visual Studio 2015 и вызываю службу wcf, которая нацелена на System.Runtime.Serialization.dll. У меня возникли проблемы с определением правильной версии .NET для цели, чтобы преодолеть это.

Версия sql:

name        value
directory   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version     v4.0.30319
state       CLR is initialized

Я попытался собрать CLR для .NET версии 4.

SQL отказывается устанавливать System.Runtime.Serialization.dll Если я собираюсь на .NET версии 3.5, я получаю

Сообщение 6586, Уровень 16, Состояние 1, Строка 8 Не удалось установить сборку System.Runtime.Serialization, поскольку существующая политика не позволит использовать ее.

Какую версию мне создать, чтобы преодолеть это?

1 Ответ

0 голосов
/ 17 мая 2018

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, и эти две вещи не одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...