Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 передача имени базы в хранимую процедуру  [new]
Gues_t999
Guest
есть скрипт который на сервере работает с несколькими базами.
обращается к базам примерно так
baseMain.dbo.table1
base1.dbo.table11
base2.dbo.table99
и тд,

все базы имеют постоянные названия, но вот база baseMain куда будут вноситься все изменения может быть разной,
DevBaseMain
TestBaseMain
ProdBaseMain
и так далее,

каждый раз менять в скрипте базу не очень удобно, хотелось бы передавать её туда при помощи параметра, возможно ли такое реализовать?
27 фев 12, 18:02    [12159449]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gues_t999
все базы имеют постоянные названия, но вот база baseMain куда будут вноситься все изменения может быть разной,

Ну так создайте процедуру в этой базе.
27 фев 12, 18:04    [12159473]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Gues_t999
Guest
Glory
Gues_t999
все базы имеют постоянные названия, но вот база baseMain куда будут вноситься все изменения может быть разной,

Ну так создайте процедуру в этой базе.


а дальше? создам в 1, во 2, в третьей, а дальше все изменения скрипта синхронизировать?
27 фев 12, 18:10    [12159516]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gues_t999
а дальше? создам в 1, во 2, в третьей, а дальше все изменения скрипта синхронизировать?

А чего бы тогда базы одинаково не называть ?
27 фев 12, 18:15    [12159558]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
=Ozzy=
Member

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

Можно выполнять подключение к конкретной базе и запрос будет автоматически выполняться в этой БД.
27 фев 12, 18:15    [12159559]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Gues_t999
Guest
=Ozzy=
Gues_t999,

Можно выполнять подключение к конкретной базе и запрос будет автоматически выполняться в этой БД.


можно. но опять не то.
конкретизирую, есть база ScriptBase в ней куча хранимых процедур, есть главная процедура (Run) которая запускает другие
весь их смысл в том что они берут данные из 2х баз, пишут в 3.. 2 базы откуда берут данные постоянны, а вот куда данные писать хотелось бы указывать при запуске скрипта Run
27 фев 12, 18:29    [12159641]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gues_t999
а вот куда данные писать хотелось бы указывать при запуске скрипта Run

Ну узнаете вы ее, а дальше что ?
Будете генерировать кучу кода с подстановкой ?
27 фев 12, 18:45    [12159727]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Gues_t999
Guest
Glory
Gues_t999
а вот куда данные писать хотелось бы указывать при запуске скрипта Run

Ну узнаете вы ее, а дальше что ?
Будете генерировать кучу кода с подстановкой ?


вот в этом и был начальный вопрос, как обратиться к базе по её имени записанной в переменной, и возможно ли такое вообще...
27 фев 12, 19:03    [12159859]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104751
Gues_t999
как обратиться к базе по её имени записанной в переменной

- Обращаются не к базам, а к объектам базы
- Обратится к объекту, имя которого в переменной, нельзя. Сервер признает только явные имена
27 фев 12, 19:11    [12159897]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Gues_t999
вот в этом и был начальный вопрос, как обратиться к базе по её имени записанной в переменной, и возможно ли такое вообще...
Использовать режим sqlcmd и скриптовые переменные.
27 фев 12, 19:15    [12159917]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Gues_t999
Glory
пропущено...

Ну так создайте процедуру в этой базе.


а дальше? создам в 1, во 2, в третьей, а дальше все изменения скрипта синхронизировать?


А как иначе?

Gues_t999
все базы имеют постоянные названия, но вот база baseMain куда будут вноситься все изменения может быть разной,
DevBaseMain
TestBaseMain
ProdBaseMain
и так далее,

У вас что один и тот же скрипт сразу в Dev/Test/Prod? Хороший процесс разработки.
27 фев 12, 21:31    [12160524]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31972
Gues_t999,

Можно для объектов
baseMain.dbo.table1
base1.dbo.table11
base2.dbo.table99
...
сделать синонимы
27 фев 12, 21:45    [12160560]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Gues_t999
Guest
alexeyvg
Gues_t999,

Можно для объектов
baseMain.dbo.table1
base1.dbo.table11
base2.dbo.table99
...
сделать синонимы


то что надо, спасибо
27 фев 12, 21:50    [12160576]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Glory
- Обратится к объекту, имя которого в переменной, нельзя. Сервер признает только явные имена
Это не совсем так.
Процедуру или функцию можно вызвать через переменную, содержащую имя.
Так что если в разных базах будет процедура с одним и тем же именем,
то можно добавлять к переменной слева имя базы через точку и вызывать
независимо от конкретной базы через одну и ту же переменную.
Не забыть, разумеется, схему между базой и именем процедуры задавать.
27 фев 12, 21:54    [12160584]     Ответить | Цитировать Сообщить модератору
 Re: передача имени базы в хранимую процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104751
iap
Это не совсем так.
Процедуру или функцию можно вызвать через переменную, содержащую имя.

Только автору темы это совсем не поможет
27 фев 12, 21:57    [12160588]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить