Сохранение процедуры без проверки

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сохранение процедуры без проверки

Сообщение VVitafresh » 16.03.2006 (Чт) 15:41

Можно ли создать процедуру на сервере так, чтоб СУБД не проверяла наличие используемых в запросе баз на сервере?
Что-то типа:
Код: Выделить всё
select * from table1
UNION
select * from database1..table1
UNION
select * from database2..table1

При этом базы database1 и database2 реально на сервере отсутствуют, соответственно хранимая процедура не сохраняется (database1 not found).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.03.2006 (Чт) 15:43

А зачем такой запрос, если базы отсутствуют?
Можешь добавить базы, скомпилировать запрос, затем удалить базы, но навряд-ли запрос будет запускаться.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.03.2006 (Чт) 15:52

Гы.

Код: Выделить всё
EXEC ('SELECT ... ')
Последний раз редактировалось GSerg 16.03.2006 (Чт) 15:55, всего редактировалось 1 раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.03.2006 (Чт) 15:53

можно, открой EM и создай

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.03.2006 (Чт) 15:58

Просто есть текущий сервер, на котором база с данными только за текущий год и резервный он же архивный сервер, на котором есть базы за предыдущие годы и каждую ночь закачивается база за текущий. Все длинные выборки делаются на резервном сервере. Но если ХП создать на нем, то на следующий день база перезапишется, соответственно ХП уже не будет. Поэтому я и хочу сохранить эту ХП на текущем (на нем отсутствуют участвующие в запросе базы). Надеюсь не сильно запутанно объяснил...
Последний раз редактировалось VVitafresh 16.03.2006 (Чт) 16:07, всего редактировалось 1 раз.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 16.03.2006 (Чт) 16:06

Храни исполняемый код в БД master. Наличие базы на сервере можно проверить двумя способами, правильным либо быстрым:
Код: Выделить всё
select CATALOG_NAME from INFORMATION_SCHEMA.SCHEMATA
select name from master.dbo.sysdatabases

Рекомендую правильный, т.к. уже в MSSQL 2005 вся модель метаданных поменялась полностью.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.03.2006 (Чт) 16:22

Только сейчас заметил, что не указал СУДБ -- Sybase ASE.
Хранить что-либо в master категорически против (как-никак не пользовательская это база).

GSerg, как мне это поможет создать ХП (создать ее мне все-таки нужно):
Код: Выделить всё
EXEC ('SELECT ... ')
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.03.2006 (Чт) 16:36

в MSSQL2000 через EM нормально создается ХП с вызовами несуществующих баз или таблиц

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.03.2006 (Чт) 16:56

Konst_One писал(а):в MSSQL2000 через EM нормально создается ХП с вызовами несуществующих баз или таблиц

Эт хорошо. Жаль только, что в Sybase нет EM. Есть, правда Sybase Central, но он какой-то убогий и вообще мало чего позволяет, в общем такую процедуру создать не дает.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.03.2006 (Чт) 16:59

может просто через ADO выполнить скрипт на создание нужной ХП :?:

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.03.2006 (Чт) 18:21

Неа, ошибку бьет. Через isql тоже нельзя.
Наверное, придется создавать на одной из архивных (реально существующих) баз.
Первоначально хотелось создавать ХП именно на текущей базе, потому что со временем заводятся новые пользователи, которые отсутствуют в архивных базах. Но сейчас подумал: наверное достаточно создать группу имеющую право на запуск данной ХП, а при заведении новых пользователей включать их по умолчанию в эту группу.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.03.2006 (Чт) 18:30

верно думаешь, с групповой политикой будет правильней


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList  
cron