Как объединить библиотеку Chilkat в SQL Server CLR - PullRequest
1 голос
/ 13 июня 2011

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

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

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

Хорошо.Так вот в чем проблема.Когда я создаю проект CLR в Visual Studio 2008, я совершенно не могу добавить какую-либо ссылку на библиотеку Chilkat (или любую другую в этом отношении).Существует нет Обзор вкладка / кнопка / ссылка или что-то еще, чтобы добавить дополнительную справочную библиотеку.Это просто не там.

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

Особенности: SQL Server 2008, Visual Studio 2008, библиотека оценки Chilkat апрель 2011 г.

1 Ответ

1 голос
/ 13 июня 2011

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

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

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

В этом разделе SQL Books Online рассматриваются ограничения SQL CLR:

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

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

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

СОЗДАТЬ СБОРКУ для сборки «ChilkatDotNet2» не удалось, потому что сборка "ChilkatDotNet2" повреждена или не чистая сборка .NET. Неподтверждаемый PE Заголовок / родная заглушка. (Microsoft SQL Server, ошибка: 6544)

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

...