![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заставить SQL server выполнить часть хранимой процедуры? [D6, MSSQL]
AndrewK © (2003-09-26 17:17:00)
Привет!
Работаю с MS SQL 2000.
Как заставить SQL server выполнить только часть хранимой процедуры?
Есть хранимая процедура, которая выполняет некоторые операции с другой базой. Вторая база может иногда переводиться в Single_User. Как написать процедуру так, чтобы она перед выполнением проверяла состояние второй базы и если она в режиме Single_User, то выводила строку "База заблокирована" и завершала работу. Если же нет, то выполнить тело процедуры.
делаю так:
declare @BlockLevel sql_variant
select @BlockLevel = DATABASEPROPERTYEX("Angstrem1C", "UserAccess")
declare @DBReadOnly sql_variant
select @DBReadOnly = DATABASEPROPERTYEX("Angstrem1C", "Updateability")
declare @1CBlocked int
if (@BlockLevel <> "MULTI_USER") or (@DBReadOnly = "READ_ONLY") set @1CBlocked = 1 else set @1CBlocked = 0
if @1CBlocked = 1 begin
select 1 as ErrorCode, "База данных заблокирована." as ErrorMessage
end else begin
-- операции с другой базой --
end
Проблема у меня в том, что процедура пытается проверить процедуру до ее выполнения и поэтому получает ошибку доступа.
Можно как-нибудь обойти проблему?
AndrewK (2003-10-02 10:20:00) [1]
>Polevi: Невероятно, но не работает...
Polevi (2003-09-29 20:24:00) [2]
if not (SINGLE_USER или READ_ONLY)
выполнить некоторое действие с другой базой данных
else
вернуть некоторый код.
AndrewK (2003-09-29 17:49:00) [3]
Может я плохо объяснил.
Мне вообще надо сделать вот что:
Есть процедура, которая должна выполнить некоторое действие с другой базой данных если она не находится в состоянии SINGLE_USER или READ_ONLY. Если база находится в этих режимах, то вернуть некоторый код.
Как написать такую процедуру?
NAlexey (2003-09-26 17:25:00) [4]
>процедура пытается проверить процедуру
Не понял как это происходит? Какая процедура? Какую процедуру?