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

Откуда: Екб
Сообщений: 1239
Доброго времени суток!

Вот такой вопрос - в одном проекте обнаружил, что кто то временами указывал в запросах полный адрес типа - MyDatabase.dbo.MyTable. Учитывая что экземпляров базы может быть несколько, в т.ч. и тестовый, это не здорово.

Применительно к MS SQL 2005-2008 как проще отлавливать и недопущать указание в запросе конкретной базы ? (кроме разумеется , тех случаев, когда например обращаемся к линкованому серверу и это действительно необходимо).
10 фев 15, 15:30    [17245008]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
трехкомпонентное имя
Guest
это называется трехкомпонентное имя и является нормальным для обращения к другой БД на этом же сервере
автор
Учитывая что экземпляров базы может быть несколько
на одном инстансе не может быть дыух баз с одинаковым именем
10 фев 15, 15:48    [17245125]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1239
трехкомпонентное имя,

Спасибо за отклик, я похоже коряво обрисовал ситуацию.
Есть база - MyDatabase, она рабочая, в ней есть хранимки, функции и т.д. В коде некоторых из них это трехкомпонентное имя указано полностью, и для продакшн базы это нормально работает. Но однажды возникает необходимость восстановить базу с именем например MyDatabase_test, внести некие изменения и отдать потестить (не всегда для этого есть отдельный сервак). Восстанавливаем, вносим изменения функционала, настраиваем конфиг клиента на тестовую фазу, отдаем тестить и тут вылазит в какой нибудь хранимке -
delete from MyDatabase.dbo.MyTable

Если бы было просто dbo.MyTable, то сработало бы в той базе с которой установлено соединение.

Интересно как проще привести все к виду dbo.MyTable (схема + объект) и в дальнейшем придерживаться именно такого формата.
10 фев 15, 16:21    [17245379]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
komrad
Member

Откуда:
Сообщений: 5758
denis_viktorovich

Интересно как проще привести все к виду dbo.MyTable (схема + объект) и в дальнейшем придерживаться именно такого формата.


это организационный вопрос

а обходным решением можно назвать использование/создание синонимов после восстановления базы на другом сервере:

http://www.baud.cz/blog/database-alias-in-microsoft-sql-server
10 фев 15, 16:36    [17245480]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
denis_viktorovich,

попробуйте Синонимы (Database Engine)
10 фев 15, 16:37    [17245498]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
VGalamakh
Member

Откуда: Киев (Альба)
Сообщений: 66
denis_viktorovich
внести некие изменения и отдать потестить


ограничте правами на продакшн тестового пользователя
11 фев 15, 11:39    [17248847]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
super-code
Member

Откуда:
Сообщений: 244
Привет!

Скриптуешь БД, и ищешь регулярным выражением. Можно выполнять по расписанию и в случае появления отправлять email заинтересованным людям.

Кстати, помимо БД, можно ещё искать запросы, где не указана схема. Тоже иногда нужно, так как часто приводит к неожиданностям.
11 фев 15, 11:44    [17248889]     Ответить | Цитировать Сообщить модератору
 Re: имя базы в from  [new]
super-code
Member

Откуда:
Сообщений: 244
Конечно же, скриптуешь не всю БД, а схему базы данных.
11 фев 15, 11:45    [17248900]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить