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

Откуда:
Сообщений: 3
Здравствуйте!

Подскажите как выполнить запрос по всем пользовательским БД в MS SQL.

Ситуация:Все БД в одном инстансе. Есть большое количество реально-временных БД, каждая БД создается при заведении нового объекта в пользовательском интерфейсе информационной системы. Необходимо выполнить в каждой БД один и тот же запрос. Всю голову сломал. Заранее спасибо
7 авг 15, 10:29    [17987510]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
o-o
Guest
Run same command on all SQL Server databases without cursors
в конце еще и с курсором пример,
если надо какие-то базы исключить, -- курсор в самый раз
7 авг 15, 10:35    [17987564]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
Jaffar
Member

Откуда:
Сообщений: 633
o-o,

да собрать динамический запрос да и все.
взять список баз из sys таблички и поехали
7 авг 15, 10:55    [17987688]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
o-o
Guest
Jaffar,

а разве по приведенной ссылке в последнем примере с курсором -- не динамика?
или нет "списка баз"?
7 авг 15, 11:00    [17987719]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
komrad
Member

Откуда:
Сообщений: 5760
o-o
Run same command on all SQL Server databases without cursors
в конце еще и с курсором пример,
если надо какие-то базы исключить, -- курсор в самый раз

тут есть вариант получше : тынц
7 авг 15, 11:10    [17987777]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
o-o
Guest
komrad,

это на случай зоопарка коллэйшенов?
спсб.
слава богу, именно такого зоопарка у нас и нет,
а то даже читать такое муторно
7 авг 15, 11:16    [17987811]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
komrad
Member

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

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

не совсем, там уход от курсора в основном, правильная выборка баз, склейка резалтсетов в один и т.п.
7 авг 15, 11:18    [17987819]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
avoborin
Member

Откуда:
Сообщений: 3
Всем большое спасибо за ответы
Написал вот такой скрипт:

DECLARE @command varchar(1000)
SELECT @command = 'IF ''?'' like ''ID%'' BEGIN USE ? EXEC(''SELECT MAX(MyColumn) AS ''''Параметр'''' FROM MyTable'') END'
EXEC sp_MSforeachdb @command

Взял пример из ответа о-о,

теперь все это нужно в запрос покрупнее, но это уже совсем другая история))
10 авг 15, 11:21    [17997669]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
komrad
Member

Откуда:
Сообщений: 5760
avoborin
Всем большое спасибо за ответы
Написал вот такой скрипт:

DECLARE @command varchar(1000)
SELECT @command = 'IF ''?'' like ''ID%'' BEGIN USE ? EXEC(''SELECT MAX(MyColumn) AS ''''Параметр'''' FROM MyTable'') END'
EXEC sp_MSforeachdb @command

Взял пример из ответа о-о,

теперь все это нужно в запрос покрупнее, но это уже совсем другая история))


а вот так разве не проще?

SELECT @command = 'IF ''?'' like ''ID%'' SELECT MAX(MyColumn) AS ''Параметр'' FROM [?].dbo.MyTable'
10 авг 15, 11:25    [17997691]     Ответить | Цитировать Сообщить модератору
 Re: Один запрос для всех пользовательских БД  [new]
avoborin
Member

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

Согласен, по Вашему варианту проще. Спасибо за замечание.
10 авг 15, 14:10    [17998880]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить