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

Откуда:
Сообщений: 329
Есть задача - генерация БД с определённой структурой, с параметризованным именем.
БД, таблицы и индексы я сгенерировал через динамические запросы. Дошёл до генерации представлений и вот никак.
Дело в том, в динамическом запросе указать имя БД нельзя - только текущая, и начать динамический запрос с "use <database>" нельзя - только с create view, а как еще выбрать динамическим запросом текущую БД, не знаю.
15 фев 19, 15:23    [21810795]     Ответить | Цитировать Сообщить модератору
 Re: генерация БД с именем в качестве параметра  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
use master;

declare @proc sysname = 'tempdb.sys.sp_executesql';

select db_name();
exec @proc N'select db_name()';
15 фев 19, 15:30    [21810811]     Ответить | Цитировать Сообщить модератору
 Re: генерация БД с именем в качестве параметра  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
=Сергей=,

Подготовьте скрипт для SQLCMD, для этой утилиты возможно использовать переменные, например:

:setvar Database "Baza1"
select F1 from [$(Database)].[dbo].[Table]


Значения переменных можно не указывать в скрипте, а передавать в командной строке:

sqlcmd.exec -i script -v Database = "Baza1"
15 фев 19, 16:19    [21810915]     Ответить | Цитировать Сообщить модератору
 Re: генерация БД с именем в качестве параметра  [new]
uaggster
Member

Откуда:
Сообщений: 827
=Сергей=
Дело в том, в динамическом запросе указать имя БД нельзя - только текущая, и начать динамический запрос с "use <database>" нельзя - только с create view, а как еще выбрать динамическим запросом текущую БД, не знаю.

Оберните динамический вызов в динамический вызов.
:-)
15 фев 19, 17:22    [21811039]     Ответить | Цитировать Сообщить модератору
 Re: генерация БД с именем в качестве параметра  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Владислав Колосов
Значения переменных можно не указывать в скрипте, а передавать в командной строке:

sqlcmd.exec -i script -v Database = "Baza1"
Если все что нужно это выполнять скрипты определенной базе, то зачем вообще городить огород с переменными, можно просто сразу подлючаться к нужной базе.

sqlcmd -d Baza1
15 фев 19, 21:18    [21811237]     Ответить | Цитировать Сообщить модератору
 Re: генерация БД с именем в качестве параметра  [new]
Владислав Колосов
Member

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

Кто же знает - чего автор хочет. Может, в перспективе, не только имя базы подставлять.
18 фев 19, 12:51    [21812854]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить