Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_OACreate и прочее + сокеты  [new]
andy st
Member

Откуда:
Сообщений: 802
Возможно ли использовать сокеты из tsql используя функции sp_OA...?
26 ноя 04, 08:17    [1137234]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Lucifer
Member

Откуда: Лисичанск
Сообщений: 334
Сокеты - не OLE объекты, а значит - нет
--------------------------------
Liberate Tu Temet Ex Inferis
26 ноя 04, 09:03    [1137316]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Trong
Member

Откуда: Novosibirsk
Сообщений: 759
Можно. В свое время на пользовал объекты для работы с сокетами.
Только зачем это нужно?
26 ноя 04, 09:19    [1137348]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
andy st
Member

Откуда:
Сообщений: 802
Trong
Можно. В свое время на пользовал объекты для работы с сокетами.
Только зачем это нужно?

есть некоторое количество сторонних девайсов, с которых нужно организовать прием данных в базу. данные выдаются в хитром формате по сокетному соединению. сейчас стоят промежуточные программы, которые занимаются приемом и посадкой в бд. но хочется их убрать и делать все средствами сервера.
26 ноя 04, 09:37    [1137394]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Trong
Member

Откуда: Novosibirsk
Сообщений: 759
andy st
сейчас стоят промежуточные программы, которые занимаются приемом и посадкой в бд

По мне так как раз тот вариант, что сейчас есть лучшее решение.

andy st
но хочется их убрать и делать все средствами сервера.

И напрасно.
26 ноя 04, 09:39    [1137400]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Да - не дело сервера клиентскими делами заниматься...
26 ноя 04, 09:41    [1137409]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Много раз обсуждалось. Стороннее железо льет данные в файло на выделенных машинах, специально для этого заточенных. По регламенту это все подливается в базу. Идеал.
26 ноя 04, 10:45    [1137711]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
andy st
Member

Откуда:
Сообщений: 802
Trong
andy st
сейчас стоят промежуточные программы, которые занимаются приемом и посадкой в бд

По мне так как раз тот вариант, что сейчас есть лучшее решение.
andy st
но хочется их убрать и делать все средствами сервера.

И напрасно.

если сервер это может делать - то почему бы и нет?
26 ноя 04, 12:53    [1138469]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
andy st
Member

Откуда:
Сообщений: 802
Crimean
Много раз обсуждалось. Стороннее железо льет данные в файло на выделенных машинах, специально для этого заточенных. По регламенту это все подливается в базу. Идеал.

ну епрст...
я же спросил, можно ли этими средствами сделать эти дела и как, если можно...
Trong ответил, что можно. И теперья жду с нетерпением ответа на вопрос "как"

по поводу идеала: если сервер может рассылать почту, bulk-ать в себя данные любых видов из файла, то следущим шагом должен быть и самостоятельный прием данных. чем это плохо? особенно если это для сервера не в напряг будет.

или кроме "каждый должен заниматься своим делом" есть какие-нибудь более серьезные обоснования того, что лучше держать промежуточный софт?
26 ноя 04, 13:10    [1138572]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Trong
Member

Откуда: Novosibirsk
Сообщений: 759
andy st
ну епрст...
я же спросил, можно ли этими средствами сделать эти дела и как, если можно...
Trong ответил, что можно. И теперья жду с нетерпением ответа на вопрос "как"

по поводу идеала: если сервер может рассылать почту, bulk-ать в себя данные любых видов из файла, то следущим шагом должен быть и самостоятельный прием данных. чем это плохо? особенно если это для сервера не в напряг будет.

или кроме "каждый должен заниматься своим делом" есть какие-нибудь более серьезные обоснования того, что лучше держать промежуточный софт?

Ставите ActiveX для работы с сокетами и пользуете спомощью процедур sp_OA*
Вот пример по работе с ActiveX-объектами:
DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)

-- Create a SQLServer object.
SET NOCOUNT ON

-- First, create the object.
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT
IF @hr <> 0
   -- Report the error.
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
   SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
   GOTO END_ROUTINE
ELSE
   -- An object is successfully created.
   BEGIN
      -- Set a property.
      EXEC @hr = sp_OASetProperty @object, 'HostName', 'Gizmo'
      IF @hr <> 0 GOTO CLEANUP
      
      -- Get a property using an output parameter.
      EXEC @hr = sp_OAGetProperty @object, 'HostName', @property OUT
      IF @hr <> 0 
         GOTO CLEANUP
      ELSE
         PRINT @property
      
      -- Get a property using a result set.
      EXEC @hr = sp_OAGetProperty @object, 'HostName'
      IF @hr <> 0 GOTO CLEANUP

      -- Get a property by calling the method.
      EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
      IF @hr <> 0 
         GOTO CLEANUP
      ELSE
         PRINT @property

      -- Call a method.
      -- SECURITY NOTE - When possible, use Windows Authentication.
      EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server', 'my_login', 'my_password'
      IF @hr <> 0 GOTO CLEANUP
      
      -- Call a method that returns a value.
      EXEC @hr = sp_OAMethod @object, 'VerifyConnection', @return OUT
      IF @hr <> 0
         GOTO CLEANUP
      ELSE
         PRINT @return
   END

CLEANUP:
   -- Check whether an error occurred.
   IF @hr <> 0
   BEGIN
      -- Report the error.
      EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
      SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
   END

   -- Destroy the object.
   BEGIN
      EXEC @hr = sp_OADestroy @object
      -- Check if an error occurred.
      IF @hr <> 0 
      BEGIN
         -- Report the error.
         EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
      END
   END

END_ROUTINE:
RETURN
26 ноя 04, 13:17    [1138607]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
andy st
Member

Откуда:
Сообщений: 802
Trong
Ставите ActiveX для работы с сокетами

а тут можно по-подробнее.
26 ноя 04, 13:58    [1138849]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Trong
Member

Откуда: Novosibirsk
Сообщений: 759
andy st
Trong
Ставите ActiveX для работы с сокетами

а тут можно по-подробнее.

В чем проблема-то?
26 ноя 04, 14:20    [1138953]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
andy st
Member

Откуда:
Сообщений: 802
Trong

В чем проблема-то?

1. где надыбать?
2. как поставить, да так, чтобы еще и работало?
29 ноя 04, 06:06    [1142222]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate и прочее + сокеты  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
А есть ли возможность при помощи sp_oa**
выполнить присвоение элементу коллекции одного объекта экземпляр другого объекта?
На VBA я это делаю так:
Set oMsg = CreateObject("CDO.Message")
Set oConfig = CreateObject("CDO.Configuration")
Set oMsg.Configuration = oConfig

(последняя строчка)


Первые два объекта создать у меня получается:

DECLARE @mes_obj int
DECLARE @prop_obj int
DECLARE @mes int
DECLARE @prop int
DECLARE @src varchar(255), @desc varchar(255)

SET NOCOUNT ON

-- First, create the object.
EXEC @mes = sp_OACreate 'CDO.Message', @mes_obj OUT
IF @mes <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @mes_obj, @src OUT, @desc OUT 
   SELECT hr=convert(varbinary(4),@mes), Source=@src, Description=@desc
END
EXEC @prop = sp_OACreate 'CDO.Configuration', @prop_obj OUT
select @prop
IF @prop <> 0
BEGIN
   -- Report the error.
   EXEC sp_OAGetErrorInfo @prop_obj, @src OUT, @desc OUT 
   SELECT hr=convert(varbinary(4),@prop), Source=@src, Description=@desc
 --  GOTO END_ROUTINE
END
Объекты создаются... а как теперь объекту @mes_obj, Вернее его набору Configuration проставить в соответствие @prop_obj?

то есть выполнить oMsg.Configuration = oConfig из кода примера на VBA
3 май 05, 11:06    [1512530]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить