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

Откуда:
Сообщений: 403
Скрипт должен перебирать базы, устанавливать текущую и далее делать некие манипуляции с текущей базой.
Базы перебираю но не отрабатывает установка текущей базы

declare @int int
declare @kolbase int
declare @basename varchar(100)

set @int=6 --начальный номер баз
set @kolbase=6 --количество баз от 1 до @int включительно
while @int <=@kolbase 
begin
set @basename=N'dev'+cast(@int as varchar)

exec('use '+@basename);
print db_name(); --здесь всё равно другая база

set @int = @int+1
end
17 дек 18, 15:29    [21766082]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается текущая база в скрипте  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36980
По сабжу:
exec('use '+qoutename(@basename) + ';'
+ 'print db_name();'
);


Вообще, все, что вы написали, реализуется одной строкой:
exec sp_msforeachdb 'if db_id() > 6 print db_name()'
17 дек 18, 15:32    [21766084]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается текущая база в скрипте  [new]
leonix
Member

Откуда:
Сообщений: 403
Гавриленко Сергей Алексеевич,
мне же не просто надо вывести имена баз. там дальше будет куча когда для обработки баз.
Т.е. мне нужно установить текущую базу и дальше с ней работать.
А у меня после
exec('use '+@basename);
другая база (tempdb она установлена текущей в ssms)
17 дек 18, 15:37    [21766089]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается текущая база в скрипте  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36980
И только из-за того, что у вас куча кода, должен измениться скоуп действия команды use?
17 дек 18, 15:46    [21766099]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается текущая база в скрипте  [new]
leonix
Member

Откуда:
Сообщений: 403
Допуская что мой год вообще негодный.
Подскажите как перебрать несколько БД и с ними выполнить некие манипуляции.
17 дек 18, 15:46    [21766100]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается текущая база в скрипте  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36980
leonix
Допуская что мой год вообще негодный.
Подскажите как перебрать несколько БД и с ними выполнить некие манипуляции.


exec sp_msforeachdb 'if db_id() > 6 begin
  <некие манипуляции>
  <и еще некие манипуляции>
  <ну вы поняли>
end'
17 дек 18, 15:48    [21766101]     Ответить | Цитировать Сообщить модератору
 Re: Не устанавливается текущая база в скрипте  [new]
leonix
Member

Откуда:
Сообщений: 403
Гавриленко Сергей Алексеевич
По сабжу:
exec('use '+qoutename(@basename) + ';'
+ 'print db_name();'
);


Вообще, все, что вы написали, реализуется одной строкой:
exec sp_msforeachdb 'if db_id() > 6 print db_name()'


Спасибо! Попробую так сделать.
17 дек 18, 16:25    [21766140]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить