Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Каким образом можно из VBA подключиться к Service Broker?  [new]
Лукьчнчук Анатолий
Member

Откуда: Москва
Сообщений: 68
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) 
	Sep 21 2011 22:45:45 
	Copyright (c) 1988-2008 Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)

Access 2003 - 2010

Хочу из VBA получать сообщения от Service Broker. Как к нему подключиться?
10 окт 13, 15:26    [14951404]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
aleks2
Guest
Set cmd = New ADODB.Command
With cmd
.CommandText = "-- ну тут сам напиши, чо хошь
dbo.MyCoolProc
"
.ActiveConnection = CurrentProject.Connection
.Parameters.Append .CreateParameter("@Month", adDate, adParamInput, , dt)
.Execute(OPTIONs:=adCmdStoredProc + adExecuteNoRecords + adAsyncExecute)
End With
10 окт 13, 15:54    [14951657]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
aleks2
.CommandText = "-- ну тут сам напиши, чо хошь


Что-нибудь типа:

SELECT TOP 1000 *, casted_message_body = 
CASE message_type_name WHEN 'X'
THEN CAST(message_body AS NVARCHAR(MAX))
ELSE message_body
END
FROM dbo.SomeQueue WITH(NOLOCK)
10 окт 13, 16:09    [14951783]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Телепатирую: ТСу нужно, чтобы при получении SB-сообщения SQL Server активировал какое-либо действие на аксессовских клиентах.
10 окт 13, 16:17    [14951841]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
Лукьчнчук Анатолий
Member

Откуда: Москва
Сообщений: 68
Спасибо. Это я и хотел узнать.
10 окт 13, 16:37    [14952035]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
Лукьчнчук Анатолий
Member

Откуда: Москва
Сообщений: 68
aleks2
Set cmd = New ADODB.Command
With cmd
.CommandText = "-- ну тут сам напиши, чо хошь
dbo.MyCoolProc
"
.ActiveConnection = CurrentProject.Connection
.Parameters.Append .CreateParameter("@Month", adDate, adParamInput, , dt)
.Execute(OPTIONs:=adCmdStoredProc + adExecuteNoRecords + adAsyncExecute)
End With


pkarklin
aleks2
.CommandText = "-- ну тут сам напиши, чо хошь


Что-нибудь типа:

SELECT TOP 1000 *, casted_message_body = 
CASE message_type_name WHEN 'X'
THEN CAST(message_body AS NVARCHAR(MAX))
ELSE message_body
END
FROM dbo.SomeQueue WITH(NOLOCK)


Получается, что VBA не может получать и обрабатывать события получения сообщения от Service Broker?
10 окт 13, 17:14    [14952307]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
Лукьчнчук Анатолий
Получается, что VBA не может получать и обрабатывать события получения сообщения от Service Broker?


К брокеру надо обращаться в отдельном потоке, поскольку он радикально асинхронный. Насколько я знаю, vba - однопоточный, но могу ошибаться :)
10 окт 13, 20:17    [14953150]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
qwerty112
Guest
Лукьчнчук Анатолий
Получается, что VBA не может получать и обрабатывать события получения сообщения от Service Broker?

BrokerService с событиями и сообщениями есть в SMO
но это для .NET
...хотя какая-то COM-"обёртка" для него есть и можно использовать и в VBA
(этот код у меня отрабатывает и VBA и VBS)
Dim broker
Set broker = CreateObject("Microsoft.SqlServer.Management.Smo.Broker.BrokerService")
10 окт 13, 21:25    [14953351]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
aleks2
Guest
Уленшпигель
Лукьчнчук Анатолий
Получается, что VBA не может получать и обрабатывать события получения сообщения от Service Broker?


К брокеру надо обращаться в отдельном потоке, поскольку он радикально асинхронный. Насколько я знаю, vba - однопоточный, но могу ошибаться :)

VBA - могет быть. Но ADO - вполне себе многопоточен - открываешь подключение и делаешь асинхронный вызов...
11 окт 13, 06:27    [14954330]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Боюсь, что с помощью VBA этого не сделать: https://www.sql.ru/forum/967534-1/sql-server-2012-service-broker-external-activator
11 окт 13, 12:24    [14955866]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
aleks2
ADO - вполне себе многопоточен


любой объект ado действует в конкретном потоке и ничего не знает и не может узнать о других. так что он таки однопоточен. но это, опять таки, не для этого форума.
11 окт 13, 20:06    [14958340]     Ответить | Цитировать Сообщить модератору
 Re: Каким образом можно из VBA подключиться к Service Broker?  [new]
aleks2
Guest
Уленшпигель
aleks2
ADO - вполне себе многопоточен


любой объект ado действует в конкретном потоке и ничего не знает и не может узнать о других. так что он таки однопоточен. но это, опять таки, не для этого форума.

Умный ты наш, а зачем "ему знать о других"? Достаточно, что приложение "знает" о всех.
12 окт 13, 05:56    [14959989]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить