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

Откуда: Краснодар
Сообщений: 270
Добрый день!

Есть группа локальных серверов, делаю SELECT по всем серверам...как отсортировать результат по наименованиям серверов?

Спасибо.
22 ноя 18, 11:44    [21741016]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35833
order by
22 ноя 18, 12:44    [21741155]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
Гавриленко Сергей Алексеевич
order by


Очень смешно! Меня само собой интересует параметр по которому ORDER BY...!
22 ноя 18, 12:52    [21741171]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
r77
Гавриленко Сергей Алексеевич
order by


Очень смешно! Меня само собой интересует параметр по которому ORDER BY...!

ORDER BY [наименованиям серверов]
22 ноя 18, 12:52    [21741173]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
uaggster
Member

Откуда:
Сообщений: 494
Гавриленко Сергей Алексеевич
order by

))))

По сабжу:
Вроде бы никак не отсортировать. И уж точно - не директивой в запросе.
Т.к. такое представление - это самодеятельность SSMS.
Она открывает тучу коннектов к серверам, складирует результаты от каждого, а потом выводит с меткой сервера каждый отдельный резалтсет в одной таблице.
Этот резалтсет не настоящий. Его студия внутри себя создала. И сортировать его, соответственно, тоже она должна.
22 ноя 18, 12:54    [21741177]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
uaggster
Гавриленко Сергей Алексеевич
order by

))))

По сабжу:
Вроде бы никак не отсортировать. И уж точно - не директивой в запросе.
Т.к. такое представление - это самодеятельность SSMS.
Она открывает тучу коннектов к серверам, складирует результаты от каждого, а потом выводит с меткой сервера каждый отдельный резалтсет в одной таблице.
Этот резалтсет не настоящий. Его студия внутри себя создала. И сортировать его, соответственно, тоже она должна.


возвращается список каждый раз хаотично,не очень удобно, спасибо за ответ, так и думала.
22 ноя 18, 14:16    [21741342]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5977
r77,

самое смешное, что имя сервера отображается в первой колонке. Вы какую версию SSMS используете? Установите последнюю, если сервер выше 2012.
22 ноя 18, 14:46    [21741412]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
Владислав Колосов
r77,

самое смешное, что имя сервера отображается в первой колонке.


ох..
мне и нужно отсортировать записи по алфавиту по результатам запроса из первой колонки...название этой колонки [имя сервера]!

Вы какую версию SSMS используете? Установите последнюю, если сервер выше 2012.


2008, спасибо, другую версию я не могу установить и использовать
22 ноя 18, 15:37    [21741520]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4594
r77
Владислав Колосов
r77,

самое смешное, что имя сервера отображается в первой колонке.


ох..
мне и нужно отсортировать записи по алфавиту по результатам запроса из первой колонки...название этой колонки [имя сервера]!

Вы какую версию SSMS используете? Установите последнюю, если сервер выше 2012.


2008, спасибо, другую версию я не могу установить и использовать


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

+ например так


declare @delay varchar(10) ;
with servers as 
(select 'server1' [name], '05' [seconds] union all 
select 'server2' [name], '10' [seconds] union all 
select 'server3' [name], '15' [seconds] union all 
select 'server4' [name], '20' [seconds] union all 
select 'server5' [name], '25' [seconds] union all 
select 'server6' [name], '30' [seconds] union all 
select 'server7' [name], '35' [seconds] union all 
select 'server8' [name], '40' [seconds] union all 
select 'server9' [name], '45' [seconds] union all 
select 'server10' [name], '50' [seconds] 
)

select @delay = '00:00:'+name 
from servers 
where name=@@servername 

select @delay=isnull(@delay,'00:00:00')

waitfor delay @delay 

/*your query*/
select ..... 


22 ноя 18, 15:46    [21741535]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4594
опечатка в скрипте :
вместо
select @delay = '00:00:'+name 
должно быть
select @delay = '00:00:'+seconds
22 ноя 18, 15:47    [21741540]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
komrad
опечатка в скрипте :
вместо
select @delay = '00:00:'+name 
должно быть
select @delay = '00:00:'+seconds


благодарю,попробую
22 ноя 18, 16:05    [21741587]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1280
r77
Добрый день!

Есть группа локальных серверов, делаю SELECT по всем серверам...как отсортировать результат по наименованиям серверов?

Спасибо.

А добавить в каждый select столбец с именем сервера, к которому сделан запрос, нельзя?
24 ноя 18, 23:39    [21743917]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4594
DaniilSeryi
r77
Добрый день!

Есть группа локальных серверов, делаю SELECT по всем серверам...как отсортировать результат по наименованиям серверов?

Спасибо.

А добавить в каждый select столбец с именем сервера, к которому сделан запрос, нельзя?


результирующая выборка группового запроса и так содержит сервер (столбец ноль), на котором был выполнен запрос

у автора хотелка, чтобы общая выборка была отсортирована по имени сервера
25 ноя 18, 20:16    [21744254]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
L_argo
Member

Откуда:
Сообщений: 445
r77
Добрый день!

Есть группа локальных серверов, делаю SELECT по всем серверам...как отсортировать результат по наименованиям серверов?

Спасибо.
Если СЕЛЕКТ делаете именно Вы (а не сторонняя утилита), помещайте результат в врем. таблицу и потом сортируйте.
Ну или помещайте в Эксель и сортируйте. :)
25 ноя 18, 22:14    [21744291]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27428
komrad
DaniilSeryi
пропущено...

А добавить в каждый select столбец с именем сервера, к которому сделан запрос, нельзя?


результирующая выборка группового запроса и так содержит сервер (столбец ноль), на котором был выполнен запрос

у автора хотелка, чтобы общая выборка была отсортирована по имени сервера
Если есть поле имя, и нужно по нему отсортировать, то врорым постом дали верный ответ.
Но автор намёками и пожиманием плеч показывает, что это ему не подходит.
Может, нужно сформулировать вопрос поближе к рекомендациям оформления сообщений, то есть привести запрос, текущий результат, и желаемый результат? Или описать задачу подробнее, если это, например поведение какого то стороннего софта, в котором "ничего нельзя менять"?
L_argo
Если СЕЛЕКТ делаете именно Вы (а не сторонняя утилита), помещайте результат в врем. таблицу и потом сортируйте.
А почему бы не отсортиролвать сразу???
25 ноя 18, 23:25    [21744344]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
alexeyvg
komrad
пропущено...


результирующая выборка группового запроса и так содержит сервер (столбец ноль), на котором был выполнен запрос

у автора хотелка, чтобы общая выборка была отсортирована по имени сервера
Если есть поле имя, и нужно по нему отсортировать, то врорым постом дали верный ответ.
Но автор намёками и пожиманием плеч показывает, что это ему не подходит.
Может, нужно сформулировать вопрос поближе к рекомендациям оформления сообщений, то есть привести запрос, текущий результат, и желаемый результат? Или описать задачу подробнее, если это, например поведение какого то стороннего софта, в котором "ничего нельзя менять"?
L_argo
Если СЕЛЕКТ делаете именно Вы (а не сторонняя утилита), помещайте результат в врем. таблицу и потом сортируйте.
А почему бы не отсортиролвать сразу???


Никакой не сторонний софт, студия SQL...я и спрашиваю как отсортировать сразу в результатах запроса...ни в excel, ни еще где-то...естественно можно загрузить в временную таблицу и в excel и еще куда-нибудь - это дополнительные действия, которых хочется избежать. Описать задачу подробнее - либо не делали никогда запрос по группе серверов,поэтому и спрашиваете подробнее...

подробнее....
выбираю из контекстного меню группы локальных серверов -> "создать запрос"
select * from [БД].[dbo].[таблица] 

в результате возвращается в первом столбце имя сервера и далее все поля из запроса, как отсортировать по алфавиту имена серверов (по первому столбцу в котором написано имя сервера), называется столбец "Имя сервера"?

ORDER BY [имя сервера] = ошибка
27 ноя 18, 12:36    [21745943]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
Eleanor
Member

Откуда:
Сообщений: 2174
komrad,

Спасибо, ваш вариант с waitfor работает.
Мне даже подошла сортировка по первой букве, для визуального удобства чтения результатов.
declare @delay varchar(10) = '00:00:0' + CAST((ASCII(UPPER(substring(@@servername, 1, 1))) - 65)/10.0 AS varchar(10))
waitfor delay @delay
select sum(size/1024)*8/1024 GB from sys.master_files
27 ноя 18, 13:22    [21746015]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 27428
r77
выбираю из контекстного меню группы локальных серверов -> "создать запрос"
А, вот оно что, то есть вопрос, не как заставить сервер отсортировать результат запроса, а как заставить клиентское приложение заставить отсортировать результаты запросов, притом что в нём сортировка не предусмотрена.
Я просто сразу не понял, что речь про "Multiple Server Query", как они в доке называются.
Микрософт говорит, что нельзя :-(
Multiple Server Query Execution ordering

Хак от komrad у меня не сработал, Microsoft SQL Server Management Studio 13.0.16106.4 :-(
27 ноя 18, 14:56    [21746166]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
Eleanor
Member

Откуда:
Сообщений: 2174
alexeyvg,

На 14.0.17285.0 работает.
Единственное неудобство - задержка waitfor должна быть заведомо больше, чем возможные сетевые задержки.
Мне пришлось delay между серверами делать ~100 мс. Т.е. если запрос к 50 серверам, то общее время ожидания уже не меньше 5 сек.
27 ноя 18, 15:08    [21746184]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
alexeyvg
r77
выбираю из контекстного меню группы локальных серверов -> "создать запрос"
А, вот оно что, то есть вопрос, не как заставить сервер отсортировать результат запроса, а как заставить клиентское приложение заставить отсортировать результаты запросов, притом что в нём сортировка не предусмотрена.
Я просто сразу не понял, что речь про "Multiple Server Query", как они в доке называются.
Микрософт говорит, что нельзя :-(
Multiple Server Query Execution ordering

Хак от komrad у меня не сработал, Microsoft SQL Server Management Studio 13.0.16106.4 :-(


Microsoft SQL Server Management Studio 10.50.1600.1, само собой у меня тоже не сработал (

ясно что никак, спасибо всем за ответы
27 ноя 18, 15:50    [21746241]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
Eleanor
Member

Откуда:
Сообщений: 2174
r77,

Можно скачать и установить последнюю версию SSMS, где всё работает.
Старые версии Sql Server 2008 он воспринимает нормально. Если только у вас нет каких-то аддонов для старого ssms.
27 ноя 18, 16:07    [21746275]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4594
Eleanor
komrad,

Спасибо, ваш вариант с waitfor работает.
Мне даже подошла сортировка по первой букве, для визуального удобства чтения результатов.
declare @delay varchar(10) = '00:00:0' + CAST((ASCII(UPPER(substring(@@servername, 1, 1))) - 65)/10.0 AS varchar(10))
waitfor delay @delay
select sum(size/1024)*8/1024 GB from sys.master_files

спасибо за пруф

интересно что, в случае если все сервера начинаются с одного префикса, то вычисление задержки по первому символу не приносит желаемого результата

кстати,
select sum(size/1024)*8/1024 GB from sys.master_files
можно переписать в более лаконичное
select sum(size/128)/1024 GB from sys.master_files
где size/128 это перевод в МБ
27 ноя 18, 16:16    [21746292]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4594
r77
Microsoft SQL Server Management Studio 10.50.1600.1, само собой у меня тоже не сработал (


а что именно не сработало?
есть текст ошибки?
27 ноя 18, 16:18    [21746295]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
komrad
r77
Microsoft SQL Server Management Studio 10.50.1600.1, само собой у меня тоже не сработал (


а что именно не сработало?
есть текст ошибки?


на локальную переменную ругается...

Невозможно присвоить значение по умолчанию локальной переменной.
Необходимо объявить скалярную переменную "@delay".


но не на всех серверах...только на тех у кого 2005, 2008-работает
27 ноя 18, 16:26    [21746303]     Ответить | Цитировать Сообщить модератору
 Re: Группа локальных серверов  [new]
r77
Member

Откуда: Краснодар
Сообщений: 270
komrad
r77
Microsoft SQL Server Management Studio 10.50.1600.1, само собой у меня тоже не сработал (


а что именно не сработало?
есть текст ошибки?


надо
set @delay= '00:00:0' + CAST((ASCII(UPPER(substring(@@servername, 1, 1))) - 65)/10.0 AS varchar(10))


в 2005 надо было через set
27 ноя 18, 16:32    [21746317]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить