Если предположить, что DLL действительно подписана, то вы, вероятно, пропускаете второй шаг предпочтительного метода, отмеченного в первой части сообщения об ошибке, а именно:
, который имеет соответствующий логин с Разрешение UNSAFE ASSEMBLY.
Эта часть имеет решающее значение для правильной работы. До для загрузки сборки на SQL Сервер необходимо выполнить следующее:
- создать ключ асимметрии c в базе данных
[master]
из DLL - создать логин из этой асимметрии c ключ
- предоставить новому логину разрешение
UNSAFE ASSEMBLY
на уровне экземпляра
Затем вы может загружать любую сборку в любую базу данных, если она подписана тем же файлом строгого имени-ключа / pfx (может быть несколько, если в вашем решении несколько проектов).
Even хотя я пытался подписать сборку обоими через ..., оба результата приводят к тому, что DLL по-прежнему не имеет "Строгое имя" сервером SQL в диалоговом окне "Новая сборка":
Правильно. Это связано либо с плохим дизайном пользовательского интерфейса, либо с ошибкой. При создании новой сборки поля «Дополнительные свойства:» не отражают значения файла, указанного в поле «Путь к сборке:». Скорее всего, это просто диалоговое окно «Сборка» для всего, что связано со сборкой, и оно прекрасно работает для сборок, которые уже загружены на SQL Сервер, но не для того, что вы пытаетесь загрузить. Если было задумано заглянуть в файл, чтобы указать текущие значения всего, что найдено по пути, указанному в поле «Путь к сборке:», то это ошибка (но я подозреваю, что это первое). Я сообщил об этом в Microsoft здесь:
SSMS: «Дополнительные свойства» в диалоговом окне «Новая сборка» вводят в заблуждение, поскольку не описывают импортируемую DLL
Для получения дополнительной информации о работе с SQLCLR, пожалуйста, посетите SQLCLR Info