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

Надо получить датасет: Имя очереди; Количество записей в очереди.

как вытащить имя очереди, я знаю:

SELECT [name] FROM sys.service_queues 


а как вытащить количество записей в очереди?
29 сен 15, 08:58    [18207887]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Добрый Э - Эх
Guest
ServiceBroker,

прочитать про GROUP BY и COUNT() ?
29 сен 15, 09:06    [18207918]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://msdn.microsoft.com/en-us/library/ms173780.aspx?f=255&MSPPError=-2147217396
29 сен 15, 09:14    [18207939]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Добрый Э - Эх
ServiceBroker,

прочитать про GROUP BY и COUNT() ?


Как остроумно)))

Как переменить GROUP BY и COUNT в запросе SELECT [name] FROM sys.service_queues, который в конечном счёте выведет ещё и количество записей в очереди?
29 сен 15, 09:16    [18207948]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory
https://msdn.microsoft.com/en-us/library/ms173780.aspx?f=255&MSPPError=-2147217396


Интересно какая вьюха мне поможет? похоже никакая...
29 сен 15, 09:22    [18207969]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ServiceBroker
Интересно какая вьюха мне поможет? похоже никакая...

Ну вам виднее, что для вас есть "Количество записей в очереди"
29 сен 15, 09:24    [18207976]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory,

Ещё на раз пересмотрел все вьюхи, там много чего есть, но нет отношения "очередь-количество записей в очереди" нет.
Вы про какую вьюху говорите?
29 сен 15, 09:29    [18208003]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ServiceBroker
Ещё на раз пересмотрел все вьюхи, там много чего есть, но нет отношения "очередь-количество записей в очереди" нет.

Так уж и нет

sys.transmission_queue (Transact-SQL)

This catalog view contains a row for each message in the transmission queue
29 сен 15, 09:33    [18208009]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
https://msdn.microsoft.com/en-us/library/ms176110.aspx
29 сен 15, 09:39    [18208027]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory,

Не то...
Есть очередь на отправку, есть очередь, куда попадают полученные сообщения.

У меня select * from sys.transmission_queue возвращает "0" строк. Хотя у меня есть очереди в которых есть записи
29 сен 15, 09:41    [18208038]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ServiceBroker
Не то.

Вы предлагаете угадывать то, что вам нужно ?

ServiceBroker
Хотя у меня есть очереди в которых есть записи

И где вы видите, что они есть ?
29 сен 15, 09:43    [18208040]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory,

И где вы видите, что они есть ?

select * from [имя_очереди]
29 сен 15, 09:45    [18208052]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ServiceBroker
И где вы видите, что они есть ?

select * from [имя_очереди]

И где вы там видите, что сообщения в них есть ?
29 сен 15, 09:46    [18208056]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory
ServiceBroker
И где вы видите, что они есть ?

select * from [имя_очереди]

И где вы там видите, что сообщения в них есть ?


Такое впечатление, что мы говорим о разных вещах... может так поймёшь?:

открываю менеджмент студио, делаю новый запрос, пишу select * from [имя_очереди] появляется табличка с записями, много колонок: status; priorety... service_name... body (всё перечислять нет смысла)

можно вытащить количество строк одной очереди select count(*) from [имя_очереди]. Но как одним запросом вытащить количество записей по каждой очереди не могу понять, что-то типа такого:

  SELECT
    [name]
    (select count(*) from sys.service_queues.[name])    
  FROM 
    sys.service_queues 


в данном случае [name] в sys.service_queues - это имя очереди
29 сен 15, 10:00    [18208112]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ServiceBroker
можно вытащить количество строк одной очереди select count(*) from [имя_очереди]. Но как одним запросом вытащить количество записей по каждой очереди не могу понять, что-то типа такого:

Т.е. вы не можете сформировать цикл по одной таблице, чтобы получать в енм имя другой таблицы что ли ?
Или вы не знаете, как сделать запрос к таблице, чье имя хранится в какой-то переменной ?
29 сен 15, 10:03    [18208123]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory
ServiceBroker
можно вытащить количество строк одной очереди select count(*) from [имя_очереди]. Но как одним запросом вытащить количество записей по каждой очереди не могу понять, что-то типа такого:

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


Ваще запутал.
То вы мне кидаете некие вьюхи, то сейчас говорите о совершенно другом подходе.

Можно конечно, но думал есть более простой способ

можно вытащить конечно как то так

FETCH NEXT FROM service_queues_cursor INTO @NameQueue
WHILE (@@FETCH_STATUS <> -1)
BEGIN
  SET @SQLQueue = 'SET @QueueCount = (SELECT COUNT(*) FROM [' + @NameQueue + '])'
  EXEC sp_executesql @SQLQueue, N'@QueueCount INT OUT', @QueueCount = @QueueCount OUT  


создать временную таблицу и в цикле кидать всё туда... потом её вызвать...
но блин, это подход мне показался не совсем удачным.
я правильно понимаю, другого решения нет?
29 сен 15, 10:08    [18208143]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
Glory
Member

Откуда:
Сообщений: 104760
ServiceBroker
То вы мне кидаете некие вьюхи, то сейчас говорите о совершенно другом подходе.

Это наверное потому, что вы очень немногословны в описании своей задачи

ServiceBroker
Можно конечно, но думал есть более простой способ

И что вас заставило так думать ?

ServiceBroker
но блин, это подход мне показался не совсем удачным.

И что вас заставило так думать ?

ServiceBroker
я правильно понимаю, другого решения нет?

Если вы про решение, где можно обращаться к неизвестной таблице, то это можно делать только в динамическом запросе
А как вы будете формировать текст этого запроса, так это от вас зависит
29 сен 15, 10:14    [18208168]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать количество записей в очереди?  [new]
ServiceBroker
Guest
Glory,

спасибо.
29 сен 15, 10:17    [18208183]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить