powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Группа локальных серверов
18 сообщений из 43, страница 2 из 2
Группа локальных серверов
    #39739258
r77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
r77
Гость
komradr77Microsoft SQL Server Management Studio 10.50.1600.1, само собой у меня тоже не сработал (


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

к сожалению сортировка не работает все равно, полное ассорти
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739264
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r77,

но ведь реально нет ни первых не вторых. Они все равноценны.
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739266
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradr77Microsoft SQL Server Management Studio 10.50.1600.1, само собой у меня тоже не сработал (


а что именно не сработало?
есть текст ошибки?Ошибки нет, просто не сортирует. Есть какой то непонятный мне порядок вывода, вот он и остаётся, независимо от проставленных значений задержки (как я понимаю, по идее сортировать должен в соответствии с ними). Ставлю 5 и 10 сек для соответственно 2х серверов.
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739267
r77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
r77
Гость
alexeyvgkomradпропущено...

а что именно не сработало?
есть текст ошибки?Ошибки нет, просто не сортирует. Есть какой то непонятный мне порядок вывода, вот он и остаётся, независимо от проставленных значений задержки (как я понимаю, по идее сортировать должен в соответствии с ними). Ставлю 5 и 10 сек для соответственно 2х серверов.

у меня точно также,просто не сортирует
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739271
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r77alexeyvgпропущено...
Ошибки нет, просто не сортирует. Есть какой то непонятный мне порядок вывода, вот он и остаётся, независимо от проставленных значений задержки (как я понимаю, по идее сортировать должен в соответствии с ними). Ставлю 5 и 10 сек для соответственно 2х серверов.

у меня точно также,просто не сортируетА, ошибся, @@servername же не обязательно равно имени зарегистрированного сервера :-)
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739275
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r77komradпропущено...

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

к сожалению сортировка не работает все равно, полное ассорти
Сделать себе скрипт на PowerShell типа такого:

Set-Location SQLSERVER:\SQLRegistration\Database Engine Server Group\<your group name>
$servers = get-childitem | Sort столбец_с_именами_серверов_в_local_group -desc
foreach ($server in $server) {<do something herer>}
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739278
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP,

Настройки для Local Server Groups обычно лежат в простом текстовом файле типа C:\Users\r77_username\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\RegSrvr.xml
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739280
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPSort столбец_с_именами_серверов_в_local_group -desc

Или Sort столбец_с_именами_серверов_в_local_group -asc, это по вкусу.
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739290
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgkomradпропущено...

а что именно не сработало?
есть текст ошибки?Ошибки нет, просто не сортирует. Есть какой то непонятный мне порядок вывода, вот он и остаётся, независимо от проставленных значений задержки (как я понимаю, по идее сортировать должен в соответствии с ними). Ставлю 5 и 10 сек для соответственно 2х серверов.

вот такой скрипт
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @delay varchar(10) ;
with servers as 
(
select 'nlc1prodci01' [name], '05' [seconds] union all 
select 'nlc1pdbscops\sc2016', '02' [seconds] union all 
select 'nlc1pdbscdwh\scdwh16', '03' [seconds] union all 
select 'nlc1itsql05', '04' [seconds] union all 
select 'nlc1itsql03\nlc1prodsql43', '01' [seconds] union all 
select 'nlc1itsql01\nlc1prodsql41', '06' [seconds] union all 
select 'nlc1devsqlmon01', '07' [seconds] 
)

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

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

waitfor delay @delay 

/*your query*/
select @delay [delay], @@servername [@@servername]




у меня выдает такой результат - см картинку
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739306
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Microsoft SQL Server Management Studio 14.0.17285.0
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739307
r77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
r77
Гость
komradalexeyvgпропущено...
Ошибки нет, просто не сортирует. Есть какой то непонятный мне порядок вывода, вот он и остаётся, независимо от проставленных значений задержки (как я понимаю, по идее сортировать должен в соответствии с ними). Ставлю 5 и 10 сек для соответственно 2х серверов.

вот такой скрипт
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @delay varchar(10) ;
with servers as 
(
select 'nlc1prodci01' [name], '05' [seconds] union all 
select 'nlc1pdbscops\sc2016', '02' [seconds] union all 
select 'nlc1pdbscdwh\scdwh16', '03' [seconds] union all 
select 'nlc1itsql05', '04' [seconds] union all 
select 'nlc1itsql03\nlc1prodsql43', '01' [seconds] union all 
select 'nlc1itsql01\nlc1prodsql41', '06' [seconds] union all 
select 'nlc1devsqlmon01', '07' [seconds] 
)

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

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

waitfor delay @delay 

/*your query*/
select @delay [delay], @@servername [@@servername]




у меня выдает такой результат - см картинку

у меня все delay по нулям, потому что как и написали выше
Код: sql
1.
name<>@@servername
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739312
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r77
у меня все delay по нулям, потому что как и написали выше
Код: sql
1.
name<>@@servername



так соберите сначала реальные имена серверов, присвойте им желаемую очередность, занесите в скрипт и запускайте его
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739317
r77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
r77
Гость
komradr77у меня все delay по нулям, потому что как и написали выше
Код: sql
1.
name<>@@servername



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

ясно,их просто много,с другой стороны это вроде как 1 раз сделать.
Благодарю за помощь, интересный подход!
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39739478
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r77ясно,их просто много,с другой стороны это вроде как 1 раз сделать.Скрипт komrad выше как раз выдайт и name, и @@servername, так что нужно просто скопировать результат.
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39743196
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть набор CLR процедур которые запускают запрос на любом количестве серверов и складируют результат в таблицу на локальном сервере. Потом можно что угодно делать, сортировать, фильтровать, джойнить и т.д. Сервера передаются либо списком через ; либо запросом где первой колонкой должно быть имя сервера. Запросы запускаются многопоточно так что работает весьма быстро, но медленне чем SSMS, потому что SSMS держит все соединения открытыми пока не закроешь окно, процедуры же открывают/закрывают коннекшн каждый раз при запуске. Зато не падает как SSMS при большом количестве серверов. На паре тысяч работало нормально. Ну и намного быстрее чем в цикле через линкованные сервера.

Сохранется все в постоянную таблицу, а не во временную, потому что из других потоков очень сложно получить доступ в текущую сессию (context connection). Немного не удобно, но нормального решения пока не нашел.

Запускается по умолчанию от учетки SQL Server-а с windows авторизацией, соответственно "главный" сервер должен иметь права на всех остальных серверах. При желании можно передать логин/пароль для каждого сервера.

Если кому интересно, могу прислать, но только AS IS. Никаких гарантий :) Успешно работает последние пару лет собирая даныне с 1,600 серверов.

Запуск выглядит примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
-- Drop "temp" tables. If the table exists the error will be raised.
-- The new tables will be created automatically based on the schema of the query result 
IF OBJECT_ID('dbo.tmp_Test')		IS NOT NULL DROP TABLE dbo.tmp_Test
IF OBJECT_ID('dbo.tmp_TestError')	IS NOT NULL DROP TABLE dbo.tmp_TestError	-- Special table to keep all the errors

	-- This sp doesn't return any resultset, but saves the result into 2 tables
	-- Parameters:
	-- @serverNames			-- Either semicolon separated list or a valid SQL query
	-- @sqlquery			-- Query that will be executed on the servers. If the schema of resultset is different on the servers the procedure will fail
	-- @targetTable			-- Table to store the result. Will be created automatically
	-- @targetErrorTable	-- Table to store all the errors. Will be created automatically or reused if already exists
EXEC dbo.sp_RunQuerySQLServers
	@serverNames = 'select name, server_id as id from msdb.dbo.sysmanagement_shared_registered_servers_internal',
--  SQL Auth
--	@serverNames = 'select name, server_id as id, ''sa'' as login, ''###%%%$$$$'' as password from msdb.dbo.sysmanagement_shared_registered_servers_internal',
	@sqlquery = 'select sum(size/1024)*8/1024 GB from sys.master_files', 
	@targetTable = 'dbo.tmp_Test', 
	@targetErrorTable = 'dbo.tmp_TestError'

-- Results
SELECT * FROM dbo.tmp_Test ORDER BY [@ServerName]
SELECT * FROM dbo.tmp_TestError

-- Drop "temp" tables
IF OBJECT_ID('dbo.tmp_Test')		IS NOT NULL DROP TABLE dbo.tmp_Test
IF OBJECT_ID('dbo.tmp_TestError')	IS NOT NULL DROP TABLE dbo.tmp_TestError	-- Special table to keep all the errors

...
Рейтинг: 0 / 0
Группа локальных серверов
    #39743384
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mind
Сохранется все в постоянную таблицу, а не во временную, потому что из других потоков очень сложно получить доступ в текущую сессию (context connection). Немного не удобно, но нормального решения пока не нашел.



думали про ##table в родительской сессии?
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39745686
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradMindСохранется все в постоянную таблицу, а не во временную, потому что из других потоков очень сложно получить доступ в текущую сессию (context connection). Немного не удобно, но нормального решения пока не нашел.



думали про ##table в родительской сессии?Думал. Но тогда во-первых нужно передать скрипт создания таблицы из одного из потоков в родительский, а во-вторых основной проблемы все равно не решает, что если вдруг два пользователя запустят один и тот же скрипт, то они будут конфликтовать за одну и ту же таблицу. Короче работы много чтобы это переписать, выхлоп не большой да и C# лишний раз открывать мне для этого лень. Так что пока работает как есть.

Хотя тут подумал, есть еще вариант, сохранять в глобальную временную как вы предложили, но с рандомным именем, а после того как все потоки отработают, создавать локальную временную, переливать данные и грохать глобальную. Вроде должно работать, хотя и не очень элегантно выглядит.
...
Рейтинг: 0 / 0
Группа локальных серверов
    #39745871
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MindХотя тут подумал, есть еще вариант, сохранять в глобальную временную как вы предложили, но с рандомным именем, а после того как все потоки отработают, создавать локальную временную, переливать данные и грохать глобальную. Вроде должно работать, хотя и не очень элегантно выглядит.

еще вариант: использовать одну глобальную временную + уникальный идентификатор запуска
это позволит нескольким сессиям использовать одну и ту же таблицу и идентифицировать свои записи по идентификатору
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Группа локальных серверов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]