2015-11-05 2 views
1

Я должен отправить уведомления об ошибках клиентов Google (GCM) из SQL Server, когда строка вставляется в определенную таблицу.SQL Server 2012 CLR Ошибка при сборе сборки

Я создал Service Broker для управления очередью и т. Д. На моем столе, я использую триггер для операций вставки, чтобы добавить «работу» в мою очередь.

Я хочу, чтобы мой сервисный брокер вызывал процедуру CLR для отправки уведомления GCM, и я создал его в Visual Studio.

Моя проблема в том, что когда я пытаюсь создать сборку в SQL Server, я получаю много ошибок, и кажется, что требуется много других фрейм-dll (например, System.Runtime ... и т. Д.).

Может ли кто-нибудь сказать мне, почему? Какие-либо предложения?

Заранее спасибо

+0

SQL CLR имеет только несколько сборок ссылочных уже. Вам нужно будет добавить все сборки, на которые основана эта сборка, чтобы SQL CLR могла принять сборку. – willaien

+0

Вы используете HTTP или XMPP? Я полагаю, что ваш SQL Server является «сервером приложений»? –

+0

Я использую HTTP ans SqlServer - это сервер, вызываемый приложением. Мне нужно отправить уведомление GCM с сервера на приложение – Badozvora

ответ

1

SQLCLR очень ограничено/ограниченной среды. На странице MSDN для Supported .NET Framework Libraries перечислены библиотеки DLL, которые гарантированно работают. Если ваш проект ссылается на DLL, отсутствующую в этом списке, вам придется попытаться загрузить его вручную. Тем не менее, это не гарантирует работу, или если она действительно работает, не гарантируется продолжение работы с обновлениями .NET Framework или SQL Server. Для многих более подробно о нюансах работы в хост CLR SQL Server, обратитесь к следующей статье, которую я написал (бесплатная регистрация требуется для этого сайта):

Stairway to SQLCLR Level 5: Development (Using .NET within SQL Server)

Теперь, кажется, что вы пытаясь использовать Google Clould (not Client) Messaging: Overview. Из того, что я вижу в этой документации, самым простым и наиболее стабильным средством связи с сервером соединений GCM является использование протокола HTTP, создание JSON вручную (это должно быть довольно легко сделать) и вызвать сервер GCM с помощью HttpWebRequest ,

Причина я предлагаю построить JSON «вручную», потому что DataContractJsonSerializer существует в System.Runtime.Serialization.dll и что не один из поддерживаемых библиотек .NET Framework (как упоминалось выше). Поскольку вы уже используете HTTP, вам просто нужно удалить сериализацию .NET JSON и вместо этого использовать StringBuilder для ее создания. Не забудьте удалить ссылку на System.Runtime.Serialization из вашего проекта.

У меня есть некоторые дополнительные данные в этих ответах:

Смежные вопросы