Ошибка с добавлением DLL в SQL Server 2014. Проблемы с CLR
У меня проблема с добавлением сборки DLL в SQL Server 2014. Я пытаюсь создать сборку хранимой процедуры, как это
CREATE ASSEMBLY pdf_create FROM 'dll path\test.dll' WITH PERMISSION_SET = SAFE
SQL Server возвращает эту ошибку:
Сборка 'test' ссылается на сборку 'system.drawing, версия =2.0.0.0, культура = нейтральная, publickeytoken=b03f5f7f11d50a3a.', Которой нет в текущей базе данных. SQL Server попытался найти и автоматически загрузить ссылочную сборку из того же места, откуда пришла ссылающаяся сборка, но эта операция завершилась неудачно (причина 2(Не удается найти указанный файл.)). Загрузите указанную сборку в текущую базу данных и повторите запрос.
Помогите пожалуйста если есть идеи
1 ответ
Поэтому вопрос в том, почему вам нужна зависимость от system.drawing.dll
в сборке SQLCLR? Я бы посмотрел на код для test.dll
и попытаться избавиться от этой конкретной зависимости.
Что вы можете сделать, если вам абсолютно необходимо включить system.drawing.dll
, скопировать его и поместить в тот же каталог, где находится dll, из которой вы пытаетесь создать сборку, поскольку SQL Server автоматически создает сборки из зависимых сборок, если они находятся по одному пути.
Однако, если вы это сделаете, вам, вероятно, потребуется изменить набор разрешений для сборки, которую вы создаете как (если я правильно помню) system.drawing.dll
требует меньшего набора разрешений, чем SAFE
,
В общем, старайтесь избавиться от зависимости, таким образом вы избавите себя от многих неприятностей.