powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Multiple Database Query sql server
18 сообщений из 18, страница 1 из 1
Multiple Database Query sql server
    #39941285
belik_lch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Ситуация следующая:
Есть 30 серваков с sql server все они разбросаны по разным районам неважно какой области. Структура баз одинаковая везде.
И отдельный сервак с репорСервером и sql server
Часто для отчетов нужно пробежать по всем базам и собрать к примеру оплаты.
Насоздавал линков на каждую из 30ти баз и в цикле с основного сервера динамическим запросом собираю данные.
Запара в том что запрос по сбору данных я пишу на одном из этих 30 баз. Позже пишу скрипт по отработке по всем, и это занимает время, т.к. нужно статический запрос экранировать(правильно причем) и превратить в динамику. Этот метод бесит, т.к иногда нужно быстро для себя что-то посчитать по всем базам.
Может есть способы попроще это делать, что то типа статический запрос, но пробегает по всем базам???
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941302
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch
Может есть способы попроще это делать, что то типа статический запрос, но пробегает по всем базам???
https://www.mssqltips.com/sqlservertip/2855/sql-server-multi-database-query-with-registered-servers/
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941314
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch,

задача решается средствами SSIS. Создайте таблицу с адресами сервером, потом контейнером цикла проходите по таблице, подменяете строку подключения в коннекторе и забираете с каждого сервера. Изучайте Integration Services.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941367
belik_lch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, читал об этих возможностях SSMS, и это решает мою проблему, даже так как я хочу. Но на сколько я понял, это доступно только в SSMS т.к. это фича самого приложения. Я использую Azure Data Studio, и там тоже есть возможность группировать сервера, но без возможности выполнения запросов по самой группе. Если бы такие вещи можно было бы творить скриптом, к примеру: "USE [servGroup] select...", то было бы прекрасно.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941370
belik_lch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, спасибо за ответ. Узнал немного нового, инструмент очень полезный, но скорее не решает моей проблемы т.к. мне не нужно перекачивать данные в одну базу. Данных очень много, и насколько я понял синхронизация данных происходит по расписанию.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941378
belik_lch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Держу вариант в голове, но не знаю насколько он адекватный:
Создать вьюху vPay со след. содержимым
select col1, col2... from server1.database.dbo.Pay
UNION ALL
select col1, col2... from server2.database.dbo.Pay
UNION ALL
...
select col1, col2... from server30.database.dbo.Pay
И с нее уже под определенными условиями тянуть данные
Насколько это тормознутая вещь выйдет, не знаю, может вы подскажете?
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941380
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch,

Там, откуда выполняете все эти запросы, заведите таблицу
Код: sql
1.
create table MyDataSources (server_name sysname, [database_name] sysname, primary key (server_name, [database_name]));


Тогда выполнить один запрос на всех источниках можно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare s cursor local fast_forward for
 select
  quotename(server_name) + N'.' + quotename([database_name]) + N'.sys.sp_executesql'
 from
  MyDataSources;

declare @proc sysname;

open s;
while 1 = 1
 begin
  fetch next from s into @proc;
  if @@fetch_status <> 0
   break;

  exec @proc @query;
 end;
close s;
deallocate s;
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941382
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch,

если это не регулярно, чаще всего "прямщас" и всегда что-то разное, то:
Execute Statements Against Multiple Servers Simultaneously

если регулярное, заставьте все сервера работать на Вас по команде с центра - СервисБрокер в помощь

а от SSIS в этом случае я отказался, по-моему push всегда лучше чем pull.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941385
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

не всегда лучше, т.к. ресурсы принимающей стороны часто ограничены и она решает в какой момент какую загрузку выполнять. Часто выполняют комбинированный способ - данные передают по готовности в промежуточное хранилище, файловое, FTP или иное, а принимающая сторона обрабатывает это хранилище по своей готовности. Т.е. PUSH-PULL.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941390
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch,

данные для отчета собирайте не запросом "на лету", а подготовьте таблицу - витрину, которая будет источником отчета. Витрину можно заполнить средствами SSIS или какими будет удобно. Витрина может хранить исторические "срезы", что позволит немедленно формировать отчеты за нужную дату.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941395
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

я не против, и если уж по микроскопом рассматривать, то и работу сервис-брокера можно подогнать под Ваше описание.
клиент пушнул, а вот когда оно доставится и уж тем более обработается это уж как напишешь..
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941416
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch
alexeyvg, читал об этих возможностях SSMS, и это решает мою проблему, даже так как я хочу. Но на сколько я понял, это доступно только в SSMS т.к. это фича самого приложения. Я использую Azure Data Studio, и там тоже есть возможность группировать сервера, но без возможности выполнения запросов по самой группе. Если бы такие вещи можно было бы творить скриптом, к примеру: "USE [servGroup] select...", то было бы прекрасно.
Понятно, что это может быть только функциональностью клиента.

Я думал, у вас вопрос про возможности SSMS, но если нет, то либо программируйте сами (динамику, свой исполнитель запросов, вьюхи), либо ищите удобный инструмент работы с сиквелом, который умеет то, что вам нужно.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941421
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch,

делайте уж по-нормальному - консолидированное хранилище
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941563
belik_lch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за ответы! Обязательно вернусь к еще к ним(когда будет время на изучение вышеописанных инструментов). А пока для себя решил проверять данные запросами по группе серверов SSMS. Для других случаев напишу приблуду которая будет принимать статику и выплевывать уже динамику. Временное решение я думаю не плохое. А дальше буду расширять обзор своих знаний
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941647
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch,
Такие решения прекрасно делаются либо группой серверов, PowerShell, SSIS-пакетом + ForEachLoop

Есть все шаблоны под все решения и варианты, могу помочь во всем в реализации, если надо

Пишите в личку

P.S. - да, идеальный ответ на форуме, я знаю :)
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941680
Mr. X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
belik_lch,

Как вариант - использовать SSMS в SQLCMD mode.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941686
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belik_lch

Может есть способы попроще это делать, что то типа статический запрос, но пробегает по всем базам???


Ну... обучись пользоваться синонимами.
...
Рейтинг: 0 / 0
Multiple Database Query sql server
    #39941822
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Multiple Database Query sql server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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