Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Backup базы / 7 сообщений из 7, страница 1 из 1
17.02.2005, 09:20
    #32920028
banshee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
Здравствуйте!
Создал в централе такой event:

BEGIN
DECLARE cmd LONG VARCHAR;
DECLARE date_name CHAR(20);

if exists(select Messages from sa_validate(null,null,'full') where Messages='No error detected') then
SET date_name = cast(TODAY(*) as char);
SET cmd = 'BACKUP DATABASE DIRECTORY ' ||
'''D:\\Backup\\Databases\\' || date_name || '-Full\\'' ' ||
'WAIT AFTER END '||
'TRANSACTION LOG TRUNCATE';
EXECUTE IMMEDIATE WITH ESCAPES OFF cmd;
end if;
END

После отработки этого скрипта, на закладке Connected users остается его сессия и висит неопределенно долгое время. Из-за этой сессии не могут выполниться инкрементальные бэкапы. То есть пока эту сессию не прибьешь, инкрементальный бэкап не может завершиться и точно также повисает. Скрипт этот запускается ночью, когда никого больше в онлайне нет. Подскажите, чего я неправильно делаю?
...
Рейтинг: 0 / 0
17.02.2005, 09:23
    #32920033
banshee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
А, забыл: ASA 9.0.2.2551
...
Рейтинг: 0 / 0
17.02.2005, 10:03
    #32920113
Alexandr Nikolaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin
Declare mess char( 128 );
Declare fff cursor FOR call sa_validate();
Open fff;
  fetch next fff into mess;
close fff;
commit;

If mess = 'No errors detected' then
     backup database directory 'C:\backup\examples' transaction log rename;
End if
end
Обрати внимание на commit !
...
Рейтинг: 0 / 0
17.02.2005, 10:58
    #32920277
banshee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
А обязательно с курсором делать?
...
Рейтинг: 0 / 0
17.02.2005, 11:10
    #32920306
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
bansheeА обязательно с курсором делать?
Нет. Обязательно с COMMIT :)
...
Рейтинг: 0 / 0
17.02.2005, 13:43
    #32920852
banshee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
Т.е. вот так, правильно? :)

BEGIN
DECLARE cmd LONG VARCHAR;
DECLARE date_name CHAR(20);

if exists(select Messages from sa_validate(null,null,'full') where Messages='No error detected') then
commit;
SET date_name = cast(TODAY(*) as char);
SET cmd = 'BACKUP DATABASE DIRECTORY ' ||
'''D:\\Backup\\Databases\\' || date_name || '-Full\\'' ' ||
'WAIT AFTER END '||
'TRANSACTION LOG TRUNCATE';
EXECUTE IMMEDIATE WITH ESCAPES OFF cmd;
end if;
END

Спасибо.
А не объясните почему так происходит? Я правильно понял, что sa_validate оставляет незавершенную транзакцию, а из-за 'WAIT AFTER END' сервер ждет пока все транзакции завершатся?
...
Рейтинг: 0 / 0
17.02.2005, 18:52
    #32921842
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Backup базы
banshee
if exists(select Messages from sa_validate(null,null,'full') where Messages='No error detected') then
commit;
..
end if;
END

А не объясните почему так происходит? Я правильно понял, что sa_validate оставляет незавершенную транзакцию, а из-за 'WAIT AFTER END' сервер ждет пока все транзакции завершатся?
Это не sa_validate оставляет транзакцию а select.
ASA автоматически начинает новую транзакцию при каждом select/insert/update/delete. И эта автоматически начатая транзакция будет жить до ближайшего commit/rollback.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Backup базы / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]