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

Откуда:
Сообщений: 733
Народ,
Есть необходимость на одном сервере просматривать несолько баз данных используя параметр имени базы.
Что-то типа такого:

PARAMETER dbname varchar(50)

/*set dbName = 'DB1'*/

USE "dbName"

SELECT * from Table1

Как мне переданный параметр имени базы корректно использовать в команде USE?
Всем спасибо.
18 дек 18, 19:43    [21767635]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36691
https://www.sql.ru/faq/faq_topic.aspx?fid=104
18 дек 18, 19:55    [21767655]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Valerii
Member

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

Не работает

declare @dbname varchar(50)
set @dbName = 'USE '+ 'DB1'
exec sp_executesql @dbName
SELECT * from Table1

Или

declare @dbname varchar(50)
set @dbName = 'USE '+ 'DB1'
exec(@dbName)
SELECT * from Table1

Кажется нет перехода в базу DB1, так как выдает на остутствие обьекта Table1

Именено важно открыть ту или иную базу данных.
18 дек 18, 20:06    [21767663]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36691
declare @dbname sysname = N'DB1'
declare @sql nvarchar (max)

set @sql = N'USE '+ qoutename(@dbname) + N'; SELECT * from Table1'
exec sp_executesql @dbName


Сообщение было отредактировано: 18 дек 18, 20:09
18 дек 18, 20:08    [21767665]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Valerii
Member

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

спасибо... это в рамках одного запроса... а просто чтобы процедура в БД master как пример, выбирала БД и строила запросы из этой базы?
18 дек 18, 20:37    [21767688]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36691
Valerii
Гавриленко Сергей Алексеевич,

спасибо... это в рамках одного запроса... а просто чтобы процедура в БД master как пример, выбирала БД и строила запросы из этой базы?
Этот вопрос вы задайте тому, кто придумал вашу архитектуру.
18 дек 18, 20:44    [21767698]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7215
Valerii
Гавриленко Сергей Алексеевич,

спасибо... это в рамках одного запроса... а просто чтобы процедура в БД master как пример, выбирала БД и строила запросы из этой базы?

exec sp_executesql N'SELECT * FROM ' + @DBNAME + '.' + @SCHEMA+ '.' + @Table'
18 дек 18, 20:48    [21767703]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Valerii
Member

Откуда:
Сообщений: 733
Relic Hunter
Valerii
Гавриленко Сергей Алексеевич,

спасибо... это в рамках одного запроса... а просто чтобы процедура в БД master как пример, выбирала БД и строила запросы из этой базы?

exec sp_executesql N'SELECT * FROM ' + @DBNAME + '.' + @SCHEMA+ '.' + @Table'


это хорошая идея ....
спс
18 дек 18, 21:57    [21767753]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
iap
Member

Откуда: Москва
Сообщений: 46952
Универсальное решение - выполнять скрипт утилитой sqlcmd.exe
18 дек 18, 22:02    [21767754]     Ответить | Цитировать Сообщить модератору
 Re: Динамческий выбор базы данных  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1507
Valerii
Народ,
Есть необходимость на одном сервере просматривать несолько баз данных
Для просмотра информации в базе совершенно не нужно переключаться на нее. Вы сами себе создали проблему на ровном месте и теперь пытаетесь ее преодолеть.
Откройте для себя варинты задания имени объекта с указанием имени сервера, имени базы, схемы и собственно имени объекта в базе.
Select * from <server>.<database>.<schema>.<table>
19 дек 18, 09:12    [21767948]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить