Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
igor888
Guest |
Добрый день. Использую MSSQL2008 R2. Если такое возможно, какие способы (или способ) имеются (+ было бы неплохо примерчик). Заранее спасибо! |
12 янв 15, 10:49 [17104630] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11561 |
сам SQL сервер этим не занимается, придётся вам ручками что-то самому делать |
12 янв 15, 10:52 [17104638] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
MSSQL - это сервер баз данных Оригинальный TSQL работает с данными, а не HTTPs протоколом Но он может вызвать что-то внешнее, где вы можете реализовать все, что вам угодно и на чем угодно |
12 янв 15, 10:53 [17104645] Ответить | Цитировать Сообщить модератору |
Gena928 Member Откуда: Москва Сообщений: 1139 |
Надо написать CLR функцию или хранимку на C# или VB. Она сможет. Но потом придется дать ей нужные права. Лучше делать это где нибудь в другом месте приложения. Т.е. например на клиенте. |
12 янв 15, 10:57 [17104668] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
http://sqlsunday.com/2013/03/03/web-requests-using-clr-proc/ |
12 янв 15, 11:08 [17104728] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Или вот это. http://tsql-tasks.blogspot.com/2014/05/web.html |
12 янв 15, 11:09 [17104738] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
Glory, Спасибо, за быстрый ответ. Тогда нужен совет, кок лучше решить след. задачу (возможно фантазирую т.к. не профи в MSSQL): Хотелось бы написать скриптами хранимую процедуру, которая крутиться в отдельном потоке MSSQL. Тут надо понять как её можно запускать, останавливать и проверять запущена ли она. Алгоритм этой процедуры прост, проверка появления новых записей в БД, чтение записей и отправка данных по HTTPs протоколу WEB серверу. Предполагаю, что запуск 1-го экземпляра хранимой процедуры в поток это возможно (могу ошибаться)?! Теперь по поводу отправки данных HTTPs - в какую сторону смотреть? Получается, хранимая процедура должна вызывать внешнюю программу (например dll)? как лучше всего это сделать? |
12 янв 15, 11:19 [17104797] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Обычно принято использовать Job в SQL Server Agent.
Мои ссылки непонятны? |
||||
12 янв 15, 11:24 [17104830] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
Когда писал ответ, твоих заметок ещё не было)))) спасибо!!!! сейчас попробую почитать Что касается "Job", ещё не работал с этим делом. Я так понимаю - это событие MSSQL, которое срабатывает в назначенное время? Может у тебя есть хорошая статейка на тему, как их можно создавать и управлять Job-ми |
||||
12 янв 15, 11:33 [17104896] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
Задачи автоматизированного администрирования (агент SQL Server) |
12 янв 15, 11:39 [17104935] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Читаем Использование "Ole Automation Procedures" может быть разрешено администратором при помощи хранимой процедуры sp_configure.
Разумеется нет
Для вашей задаче, имхо, лучше не пихать все в процедуру MSSQL. Тем более такие обращения к внешним ресурсам |
||||||
12 янв 15, 13:23 [17105608] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
Не совсем понимаю ответа... что значит не пихать всё в процедуру? и что страшного в том что идёт вызов COM объекта через хранимку? |
||||
12 янв 15, 13:29 [17105639] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
разные задачи можно и нужно решать разными способами А обработка данных, выгрузка результатов и пересылка результатов - это разные задачи |
||
12 янв 15, 14:00 [17105875] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
Glory, Понятно что разные, и конечный результат далёк от теста, который накидал за 3 минуты! но Ваш ответ, всё же странный... мне показалась, что Вы против использования в хранимках вызов COM объектов, но почему я так и не понял. попутный вопрос, при вызове "sp_configure" получаю набор данных, а как из этого набора вытащить параметр по полю "run_value". Вопрос такой, как проверить включен ли "Ole Automation Procedures". Через sp_configure это можно вытащить... но как передать в переменную не пойму... |
12 янв 15, 14:29 [17106066] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Ну так конечным реузльтатом у вас получается реализация всех задач на TSQL
Да, против
Вы не пробовали до запусков сначала читать хелп ? |
||||||
12 янв 15, 14:32 [17106085] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
Glory, В том то и дела что прочитал, но ответа нет((( В следующем примере показан просмотр текущего значения параметра OLE Automation procedures. EXEC sp_configure 'Ole Automation Procedures'; GO получаю набор данных, а как передать в объявленную переменную не могу понять |
12 янв 15, 14:36 [17106120] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Т.е. пример A. Listing the advanced configuration options вы осилили, а сидущий следом пример B. Changing a configuration option уже несмогли ? |
||
12 янв 15, 14:39 [17106145] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11561 |
во временную таблицу результат выполнения вставьте и используйте далее как вам нужно |
12 янв 15, 14:40 [17106148] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
видимо как задаю вопрос, так и получаю ответ... решил вот так: SELECT @R = [Value] FROM sys.configurations WHERE [name] = 'Ole Automation Procedures' |
||||
12 янв 15, 14:45 [17106196] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4807 |
Как минимум вам надо использовать SSIS |
||
12 янв 15, 15:01 [17106295] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
так и.... не совсем понятно?! вот работающий тестовый код: 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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Всех админами сделате для запуска этого кода ? При возрате результата больше 8Кб что делать будете ? |
||
12 янв 15, 15:08 [17106332] Ответить | Цитировать Сообщить модератору |
igor888
Guest |
Я уже писал, что менее 8000 символов и на отправку и на получение, поэтому и выбрал этот путь, а так, по данному протоколу максимальный возврат 20 символов и отправка максимум 360 символов... |
||||
12 янв 15, 15:29 [17106490] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
А завтра что будет ? |
||
12 янв 15, 15:31 [17106497] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |