Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Valerii Member Откуда: Сообщений: 749 |
Народ, Есть необходимость на одном сервере просматривать несолько баз данных используя параметр имени базы. Что-то типа такого: PARAMETER dbname varchar(50) /*set dbName = 'DB1'*/ USE "dbName" SELECT * from Table1 Как мне переданный параметр имени базы корректно использовать в команде USE? Всем спасибо. |
18 дек 18, 19:43 [21767635] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
https://www.sql.ru/faq/faq_topic.aspx?fid=104 |
18 дек 18, 19:55 [21767655] Ответить | Цитировать Сообщить модератору |
Valerii Member Откуда: Сообщений: 749 |
Гавриленко Сергей Алексеевич, Не работает 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] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
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] Ответить | Цитировать Сообщить модератору |
Valerii Member Откуда: Сообщений: 749 |
Гавриленко Сергей Алексеевич, спасибо... это в рамках одного запроса... а просто чтобы процедура в БД master как пример, выбирала БД и строила запросы из этой базы? |
18 дек 18, 20:37 [21767688] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||
18 дек 18, 20:44 [21767698] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
exec sp_executesql N'SELECT * FROM ' + @DBNAME + '.' + @SCHEMA+ '.' + @Table' |
||
18 дек 18, 20:48 [21767703] Ответить | Цитировать Сообщить модератору |
Valerii Member Откуда: Сообщений: 749 |
это хорошая идея .... спс |
||||
18 дек 18, 21:57 [21767753] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Универсальное решение - выполнять скрипт утилитой sqlcmd.exe |
18 дек 18, 22:02 [21767754] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1558 |
Откройте для себя варинты задания имени объекта с указанием имени сервера, имени базы, схемы и собственно имени объекта в базе. Select * from <server>.<database>.<schema>.<table> |
||
19 дек 18, 09:12 [21767948] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |