Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Добрый день.

Использую MSSQL2008 R2.

Если такое возможно, какие способы (или способ) имеются (+ было бы неплохо примерчик).

Заранее спасибо!
12 янв 15, 10:49    [17104630]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Konst_One
Member

Откуда:
Сообщений: 11561
сам SQL сервер этим не занимается, придётся вам ручками что-то самому делать
12 янв 15, 10:52    [17104638]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
MSSQL - это сервер баз данных
Оригинальный TSQL работает с данными, а не HTTPs протоколом

Но он может вызвать что-то внешнее, где вы можете реализовать все, что вам угодно и на чем угодно
12 янв 15, 10:53    [17104645]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
Надо написать CLR функцию или хранимку на C# или VB. Она сможет.

Но потом придется дать ей нужные права.
Лучше делать это где нибудь в другом месте приложения. Т.е. например на клиенте.
12 янв 15, 10:57    [17104668]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
http://sqlsunday.com/2013/03/03/web-requests-using-clr-proc/
12 янв 15, 11:08    [17104728]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Или вот это.
http://tsql-tasks.blogspot.com/2014/05/web.html
12 янв 15, 11:09    [17104738]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Glory,

Спасибо, за быстрый ответ. Тогда нужен совет, кок лучше решить след. задачу (возможно фантазирую т.к. не профи в MSSQL):

Хотелось бы написать скриптами хранимую процедуру, которая крутиться в отдельном потоке MSSQL. Тут надо понять как её можно запускать, останавливать и проверять запущена ли она. Алгоритм этой процедуры прост, проверка появления новых записей в БД, чтение записей и отправка данных по HTTPs протоколу WEB серверу.

Предполагаю, что запуск 1-го экземпляра хранимой процедуры в поток это возможно (могу ошибаться)?!

Теперь по поводу отправки данных HTTPs - в какую сторону смотреть? Получается, хранимая процедура должна вызывать внешнюю программу (например dll)? как лучше всего это сделать?
12 янв 15, 11:19    [17104797]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
igor888
Хотелось бы написать скриптами хранимую процедуру, которая крутиться в отдельном потоке MSSQL.

Обычно принято использовать Job в SQL Server Agent.
igor888
Теперь по поводу отправки данных HTTPs - в какую сторону смотреть? Получается, хранимая процедура должна вызывать внешнюю программу (например dll)? как лучше всего это сделать?


Мои ссылки непонятны?
12 янв 15, 11:24    [17104830]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Jovanny
igor888
Хотелось бы написать скриптами хранимую процедуру, которая крутиться в отдельном потоке MSSQL.

Мои ссылки непонятны?


Когда писал ответ, твоих заметок ещё не было))))

спасибо!!!! сейчас попробую почитать

Что касается "Job", ещё не работал с этим делом. Я так понимаю - это событие MSSQL, которое срабатывает в назначенное время? Может у тебя есть хорошая статейка на тему, как их можно создавать и управлять Job-ми
12 янв 15, 11:33    [17104896]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Задачи автоматизированного администрирования (агент SQL Server)
12 янв 15, 11:39    [17104935]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Jovanny,

В продолжении темы отправки HTTP запроса.

Т.к. тело запроса будет гораздо меньше 8000 символов решил воспользоваться COM объектами,
накидал тестовый код:

DECLARE @url_str VARCHAR(1024)
DECLARE @post_str VARCHAR(8000)
DECLARE @rc INT
DECLARE @object int

set @url_str = 'https://http.mnogotest.com:8000/send/'
set @post_str = 'login=8go&password=RUMH&text=test'
EXEC @rc = sp_OACreate 'MSXML2.ServerXMLHTTP', @object OUTPUT


пишет ошибку: "Сообщение 15281, уровень 16, состояние 1, процедура sp_OACreate, строка 1
SQL Server заблокировал доступ к процедура "sys.sp_OACreate" компонента "Ole Automation Procedures", поскольку он отключен в результате настройки конфигурации безопасности сервера. Использование "Ole Automation Procedures" может быть разрешено администратором при помощи хранимой процедуры sp_configure. Дополнительные сведения о включении "Ole Automation Procedures" см. в разделе "Настройка контактной зоны" в электронной документации по SQL Server."

Вроде понятно и непонятно))))...
подскажите,
- как включить "Ole Automation Procedures" на сервере через SQL скрипты?
- И если это всё включится при бекапе и развёртывании на другом сервере, настройка сохранится?



и, ещё попутный вопрос, есть вроде как 2 COM объекта для реализации задачи

1. sp_OACreate 'MSXML2.ServerXMLHTTP'
и
2. sp_OACreate 'WinHttp.WinHttpRequest.5.1'

что лучше использовать касаемо моей задачи?
12 янв 15, 13:20    [17105585]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
- как включить "Ole Automation Procedures" на сервере через SQL скрипты?

Читаем
Использование "Ole Automation Procedures" может быть разрешено администратором при помощи хранимой процедуры sp_configure.

igor888
- И если это всё включится при бекапе и развёртывании на другом сервере, настройка сохранится?

Разумеется нет

igor888
что лучше использовать касаемо моей задачи?

Для вашей задаче, имхо, лучше не пихать все в процедуру MSSQL. Тем более такие обращения к внешним ресурсам
12 янв 15, 13:23    [17105608]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Glory

igor888
что лучше использовать касаемо моей задачи?

Для вашей задаче, имхо, лучше не пихать все в процедуру MSSQL. Тем более такие обращения к внешним ресурсам


Не совсем понимаю ответа... что значит не пихать всё в процедуру? и что страшного в том что идёт вызов COM объекта через хранимку?
12 янв 15, 13:29    [17105639]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
Не совсем понимаю ответа... что значит не пихать всё в процедуру?

разные задачи можно и нужно решать разными способами
А обработка данных, выгрузка результатов и пересылка результатов - это разные задачи
12 янв 15, 14:00    [17105875]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Glory,

Понятно что разные, и конечный результат далёк от теста, который накидал за 3 минуты!

но Ваш ответ, всё же странный... мне показалась, что Вы против использования в хранимках вызов COM объектов, но почему я так и не понял.


попутный вопрос, при вызове "sp_configure" получаю набор данных, а как из этого набора вытащить параметр по полю "run_value". Вопрос такой, как проверить включен ли "Ole Automation Procedures". Через sp_configure это можно вытащить... но как передать в переменную не пойму...
12 янв 15, 14:29    [17106066]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
Понятно что разные, и конечный результат далёк от теста, который накидал за 3 минуты!

Ну так конечным реузльтатом у вас получается реализация всех задач на TSQL

igor888
но Ваш ответ, всё же странный... мне показалась, что Вы против использования в хранимках вызов COM объектов, но почему я так и не понял.

Да, против

igor888
попутный вопрос, при вызове "sp_configure" получаю набор данных, а как из этого набора вытащить параметр по полю "run_value". Вопрос такой, как проверить включен ли "Ole Automation Procedures". Через sp_configure это можно вытащить... но как передать в переменную не пойму...

Вы не пробовали до запусков сначала читать хелп ?
12 янв 15, 14:32    [17106085]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Glory,

В том то и дела что прочитал, но ответа нет(((

В следующем примере показан просмотр текущего значения параметра OLE Automation procedures.
EXEC sp_configure 'Ole Automation Procedures';
GO

получаю набор данных, а как передать в объявленную переменную не могу понять
12 янв 15, 14:36    [17106120]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
а как передать в объявленную переменную не могу понять

Т.е. пример A. Listing the advanced configuration options вы осилили, а сидущий следом пример B. Changing a configuration option уже несмогли ?
12 янв 15, 14:39    [17106145]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Konst_One
Member

Откуда:
Сообщений: 11561
во временную таблицу результат выполнения вставьте и используйте далее как вам нужно
12 янв 15, 14:40    [17106148]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Glory
igor888
а как передать в объявленную переменную не могу понять

Т.е. пример A. Listing the advanced configuration options вы осилили, а сидущий следом пример B. Changing a configuration option уже несмогли ?


видимо как задаю вопрос, так и получаю ответ...


решил вот так:
SELECT @R = [Value] FROM sys.configurations WHERE [name] = 'Ole Automation Procedures'
12 янв 15, 14:45    [17106196]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
igor888
Хотелось бы написать скриптами хранимую процедуру, которая крутиться в отдельном потоке MSSQL. Тут надо понять как её можно запускать, останавливать и проверять запущена ли она. Алгоритм этой процедуры прост, проверка появления новых записей в БД, чтение записей и отправка данных по HTTPs протоколу WEB серверу.


Как минимум вам надо использовать SSIS
12 янв 15, 15:01    [17106295]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
a_voronin
igor888
Хотелось бы написать скриптами хранимую процедуру, которая крутиться в отдельном потоке MSSQL. Тут надо понять как её можно запускать, останавливать и проверять запущена ли она. Алгоритм этой процедуры прост, проверка появления новых записей в БД, чтение записей и отправка данных по HTTPs протоколу WEB серверу.


Как минимум вам надо использовать SSIS


так и.... не совсем понятно?!

вот работающий тестовый код:

DECLARE @url_str varchar(1024)
      , @post_str varchar(8000)
      , @response varchar(8000)
      , @object int
      , @rc int
      , @src varchar(255)
      , @desc varchar(255)
      
  set @url_str = 'https://http.mnogotets.com:8001/send/'
  set @post_str = 'login=8goJOGbb5&password=RUMHYHH&text=test&operation=send'
  
  EXEC @rc = sp_OACreate 'MSXML2.ServerXMLHTTP', @object OUTPUT  
  EXEC @rc = sp_OAMethod @object, 'open', NULL, 'POST', @url_str, 'false'
  EXEC @rc = sp_OAMethod @object, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
  EXEC @rc = sp_OAMethod @object, 'send', NULL, @post_str
  EXEC @rc = sp_OAGetProperty @object, 'responseText', @response OUT
  
  EXEC @rc = sp_OADestroy @object
  print @response


вроде как работает по SSL
12 янв 15, 15:06    [17106317]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
вот работающий тестовый код:

Всех админами сделате для запуска этого кода ?
При возрате результата больше 8Кб что делать будете ?
12 янв 15, 15:08    [17106332]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
igor888
Guest
Glory
igor888
вот работающий тестовый код:

Всех админами сделате для запуска этого кода ?
При возрате результата больше 8Кб что делать будете ?


Я уже писал, что менее 8000 символов и на отправку и на получение, поэтому и выбрал этот путь,
а так, по данному протоколу максимальный возврат 20 символов и отправка максимум 360 символов...
12 янв 15, 15:29    [17106490]     Ответить | Цитировать Сообщить модератору
 Re: Может ли MSSQL отправлять по HTTPs протоколу GET или POST запросы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
igor888
Я уже писал, что менее 8000 символов и на отправку и на получение, поэтому и выбрал этот путь,
а так, по данному протоколу максимальный возврат 20 символов и отправка максимум 360 символов...

А завтра что будет ?
12 янв 15, 15:31    [17106497]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить