К основному контенту

CLR процедуры. Проблемой с XML-сериализацией.

Работая с CLR процедурами столкнулся со следующей проблемой:

при попытке сериализовать в объект ответ от Web-сервиса с помощью XmlSerializer я получал следующую ошибку на SQL-сервере:

Cannot load dynamically generated serialization assembly.

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

Чтобы создать сборку сериализации, нужно выполнить следующие шаги:

1. В VS выполнить Build проекта, в котором мы создаем  CLR процедуры.
2. С помощью приложения sgen.exe  создать сборку сериализации. Для этого выполнить в командной строке следующий код:
[Путь до приложения  sgen.exe]>sgen.exe /force [Путь до проекта с  CLR процедурами] / SqlServerProject.dll
В моем случае:
[Путь до приложения  sgen.exe] == C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin;
SqlServerProject.dll - это имя сборки моего проекта с CLR процедурами.

В папке со сборкой проекта появится сборка сериализации. Добавить ее на сервер можно с помощью следующей команды, выполненной на SQL-сервере:

CREATE ASSEMBLY [SqlServerProject.XmlSerializers] from
'[Путь до проекта с  CLR процедурами]SqlServerProject.XmlSerializers.dll'
WITH permission_set = EXTERNAL_ACCESS

Если SQL-сервер находится на другом компьютере(сервере), то сборку придется предварительно скопировать на диск этого сервера, и [Путь до проекта с  CLR процедурами] в этом случае будет равен пути до папки на сервере, где будет находиться наша сборка.

Выполняем команду и Вуаля! Наша процедура заработала.

P.S. Есть еще один момент, о котором хочу упомянуть. Я работаю с Framework 4.0, а SQL-сервер поддерживает только Framework 3.5. Поэтому в свойствах моего проекта мне пришлось указать TargetFramework  3.5 Может кому-нибудь эта информация окажется полезной.

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

Пример взаимодействия с Odnoklassniki Rest API на C#.

Итак, как и обещал, продолжаю тему взаимодействия с различными API. В прошлый раз писал про  API ВКонтакте , сегодня напишу про API Одноклассников. Первое, что нам нужно сделать - это зарегистрироваться как разработчик на Одноклассниках. Сделать это можно по следующей ссылке  Форма регистрации разработчика приложений Получив права разработчика, необходимо зарегистрировать сайт как приложение. Подробно как это сделать можно прочитать  здесь После того как сайт будет зарегистрирован придет письмо, содержащее: Application ID: xxxxxx. Публичный ключ приложения: xxxxxxxxxxxxxxxxxxxxxxxxx. Секретный ключ приложения:  xxxxxxxxxxxxxxxxxxxxxxxxx. Ссылка на приложение: http://www.odnoklassniki.ru/games/xxxxx Используя эти данные можно начать работу с API. Для выполнения запросов к API пользователь должен авторизоваться в Одноклассниках. Добавляем на нашем сайте ссылку для авторизации пользователя: http://www.odnoklassniki.ru/oauth/authorize?client_id...

C# и API ВКонтакте. Обращение к адресу API-сервиса путем создания HTTP-запроса (POST)

В статье  C# POST. Отправляем запросы на адрес стороннего сервера  я рассказал про метод, с помощью которого можно работать с различным API, принимающими POST запрос и возвращающими ответ в виде json или xml. Сегодня я хочу написать, как я применял этот метод при работе с API  ВКонтакте. Для примера возьму задачу получения через API списка групп, в которых состоит пользователь. В первую очередь необходимо зарегистристрировать наш сайт как приложение ВКонтакте. Заходим по ссылке  http://vk.com/editapp?act=create&site=1  и подключаем наш сайт. Дальше задача  делится на две подзадачи, а именно: авторизация пользователя и обращение к API для получения списка групп. Для авторизации мы пользователю предлагаем перейти по следующей ссылке: http://api.vkontakte.ru/oauth/authorize? response_type=code&redirect_uri={0} &client_id={1} &scope={2} &display=page , redirect_uri - адрес страницы нашего сайта, куда будет возвращен пользоват...

Monotouch и Monodevelop. Программируем для iOS на C# на примере нашего проекта. Часть I.

Сегодня я начинаю серию публикаций, посвященных разработке нашего первого приложения под iOS на C#. Так как это проект новый для нас, то статьи будут появляться по мере нашего продвижения в этом вопросе. Предыстория . Руководство поставило задачу своими силами сделать приложение Интернет-магазина для iPhon-ов и iPad-ов. А в дальнейшем и под Android. Как разработчики на C# мы стали изучать варианты реализации. И остановились на  Monotouch . Monotouch - это надстройка к Monodevelop, которая позволяет писать приложения под iOS на C#. Код компилируется в нативный objective C и прекрасно работает под iOS. Причем Monotouch позволяет писать не только для iOS, но и для Android. Как раз то, что нужно. Вы спросите, что такое Monodevelop? Это среда разработки на C#, работающая под Mac OS. Так сказать аналог VisualStudio для Mac-ов. И все же почему Monotouch? Ответ прост - низкий порог вхождения. Зная C# можно сразу начинать работу над приложением не тратя время на и...