+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 91.78 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

Jabber клиент для SQL Server (JabberCLR)

19.01.2010 14:15

XMPP - Extensible Messaging and Presence Protocol (англ. расширяемый протокол обмена сообщениями и информацией о присутствии), ранее известный как Jabber[1] ([ˈʤæbə(r)], джа́ббер(англ. болтовня, трёп; тарабарщина) - это основанный на XML открытый, свободный для использования протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близкому к режиму реального времени. Изначально спроектированный легко расширяемым, протокол, помимо передачи текстовых сообщений, поддерживает передачу голоса, видео и файлов по сети.

В отличие от коммерческих систем мгновенных сообщений, таких, как AIM, ICQ, MSN и Yahoo, XMPP является децентрализованной, расширяемой и открытой системой. Любой желающий может открыть свой сервер мгновенных сообщений, регистрировать на нём пользователей и взаимодействовать с другими серверами XMPP. На основе протокола XMPP уже открыто множество частных и корпоративных серверов XMPP. Среди них есть достаточно крупные проекты, такие как Google Talk, LiveJournal и Gizmo5.
(http://ru.wikipedia.org/wiki/Jabber)

В качестве альтернативного клиента предлагаю CLR-сборку.

Для быстрого написания сборки я воспользовался уже готовой библиотекой XMPP (.NET) - agsXMPP

01.using System;
02.using Microsoft.SqlServer.Server;
03.using agsXMPP;
04.using agsXMPP.protocol.client;
05.  
06.public class JabberCLR
07.{
08.    [SqlFunction]
09.  
10.    public static string SendMessage(string Server, string Username, string Password, string Port, string SendTo, string Message)
11.    {
12.  
13.        XmppClientConnection xmpp = new XmppClientConnection();
14.        xmpp.Resource = "JabberCLR";
15.        xmpp.Server = Server;
16.        xmpp.Username = Username;
17.        xmpp.Password = Password;
18.        xmpp.Port = Convert.ToInt32(Port);
19.  
20.        Message msg = new Message();
21.        msg.Type = MessageType.chat;
22.        msg.To = new Jid(SendTo);
23.        msg.Body = Message;
24.  
25.        xmpp.Open();
26.  
27.        xmpp.OnLogin += delegate(object o){xmpp.Send(msg);};
28.  
29.        return (xmpp.XmppConnectionState.ToString());
30.    }
31.}

При регистрации нашей сборки потребуется ещё сама библиотека agsXMPP.dll и System.Drawing.dll (из C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 ). Собираем эти 3 библиотеки в одну папку, дабы не получить ошибку подобно этой:

Error
Msg 10301, Level 16, State 1, Line 1
Assembly "JabberCLR" references assembly "agsxmpp, version=1.1.0.0, culture=neutral, publickeytoken=ff839b81f1debe86.", which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: 2(failed to retrieve text for this error. Reason: 1815)). Please load the referenced assembly into the current database and retry your request.

либо:

Error
Msg 10301, Level 16, State 1, Line 1
Assembly "JabberCLR" references assembly "system.drawing, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.", which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: 2(failed to retrieve text for this error. Reason: 1815)). Please load the referenced assembly into the current database and retry your request.

После этого регистрируем сборку на сервере БД:

1.CREATE ASSEMBLY [AssemblyJabber]
2.AUTHORIZATION [dbo]
3.FROM 'C:\CLR\JabberCLR.dll'
4.WITH PERMISSION_SET = UNSAFE
5.GO

Создаём скалярную функцию с ссылкой на нашу сборку:

01.CREATE FUNCTION [dbo].[SendMessage]
02.(
03.@Server [nvarchar](128),
04.@Username [nvarchar](128),
05.@Password [nvarchar](128),
06.@Port [nvarchar](5),
07.@SendTo [nvarchar](128),
08.@Message [nvarchar](max)
09.)
10.RETURNS [nvarchar](50) WITH EXECUTE AS CALLER
11.AS
12.EXTERNAL NAME [AssemblyJabber].[JabberCLR].[SendMessage]
13.GO

Ну и сам вызов функции (отправка сообщения):

01.SELECT [dbo].[SendMessage] (
02.--Любой сервер Jabber
03.'jabber.ru',
04.--JID от кого шлём сообщения
05.'MyUser',
06.--Пароль нашей учётки
07.'MyPassword',
08.--Порт на сервере
09.'5222',
10.--Получатель сообщения
11.'mssql@jabber.ru',
12.--Само сообщение
13.'TestMessage')
14.GO

Таким образом можно отсылать через XMPP-протокол сообщения, например о каком-либо событии на сервере БД.

Сборка писалась под Framework v3.5 для SQL Server 2008.

P.S.: Не забываем про

1)

1.SP_CONFIGURE 'clr enabled', 1
2.RECONFIGURE

2)

1.ALTER DATABASE [Ваша база] SET TRUSTWORTHY ON

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года