Как объединить библиотеку Chilkat в среду SQL Server CLR

#sql-server #clr #chilkat

#sql-сервер #среда clr #chilkat

Вопрос:

Я пытаюсь использовать библиотеку шифрования Chilkat в SQL Server 2008 через сборку CLR. Из-за того, как собрана библиотека Chilkat (см. Их сообщение ниже), я не могу сделать это напрямую, и мне нужно создать класс-оболочку, который ссылается на библиотеку Chilkat и при этом полностью управляется так, как требует SQL Server.

Ниже приведен ответ от Chilkat, когда я спросил о том, как напрямую взаимодействовать с их библиотекой с помощью SQL Server (короткая версия заключается в том, что вы не можете).

The Chilkat .NET assembly — это сборка смешанного режима, что означает, что реализация написана на C и компилируется в машинный код. Внешний уровень — это управляемый интерфейс. В прошлом я узнал от других клиентов, что в этой ситуации вы можете решить проблему, создав простую библиотеку классов-оболочек в Visual Studio (полностью управляемую), где сборка-оболочка ссылается на сборку Chilkat, а объекты SQL Server вместо этого ссылаются на вашу сборку-оболочку. Учитывая, что вы, вероятно, вызываете всего несколько методов Chilkat (и свойств), не должно составить большого труда написать несколько методов для пересылки вызова к обернутому объекту Chilkat и возврата результата.

ОК. Итак, вот в чем проблема. Когда я создаю проект CLR в Visual Studio 2008, я совершенно не могу добавить какую-либо ссылку на библиотеку Chilkat (или любую другую, если уж на то пошло). Нет вкладки «Обзор» / кнопки / ссылки или чего-либо еще, чтобы добавить дополнительную справочную библиотеку. Ее там просто нет.

Пожалуйста, помогите, прежде чем я буду вынужден прибегнуть к Clipper или dBase3 !

Сведения: SQL Server 2008, Visual Studio 2008, библиотека для оценки Chilkat, апрель 2011.

Ответ №1:

SQL Server немного разборчив в том, какие сборки CLR он разрешает загружать, а Visual Studio не позволяет вам добавлять какие-либо ссылки на старую сборку волей-неволей.

Это связано с тем, что вам нужно загружать сторонние сборки с помощью инструмента «Новая сборка«, который находится в разделе «Программируемость» для вашей базы данных (щелкните правой кнопкой мыши сборки), или с помощью CREATE ASSEMBLY .

Это дает SQL Server возможность проверить сборку и убедиться, что она имеет поддерживаемый тип для использования с интеграцией SQL CLR. Это делается для того, чтобы гарантировать, что сборка вряд ли приведет к сбою SQL Server или вызовет проблемы со стабильностью.

В этом разделе онлайн-книг по SQL рассматриваются ограничения среды SQL CLR:

Ограничения модели программирования интеграции CLR

Сборка Chilikat завершится ошибкой при тестировании PEVerify (описано в разделе EXTERNAL_ACCESS), поскольку сборки смешанного режима, содержащие неуправляемые функции, не являются проверяемым кодом, безопасным для типов.

Если вы попытаетесь установить непроверяемую сборку в смешанном режиме, вы получите ошибку, такую как:

НЕ удалось создать сборку для сборки ‘ChilkatDotNet2’, поскольку сборка ‘ChilkatDotNet2’ имеет неправильную форму или не является чистой.ЧИСТАЯ сборка. Непроверяемый PE-заголовок / собственная заглушка. (Microsoft SQL Server, ошибка: 6544)

Здесь есть ветка обсуждения, которая охватывает эту тему и некоторые предлагаемые обходные пути.