powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Backup базы
7 сообщений из 7, страница 1 из 1
Backup базы
    #32920028
banshee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Создал в централе такой 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
Backup базы
    #32920033
banshee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, забыл: ASA 9.0.2.2551
...
Рейтинг: 0 / 0
Backup базы
    #32920113
Фотография Alexandr Nikolaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Backup базы
    #32920277
banshee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А обязательно с курсором делать?
...
Рейтинг: 0 / 0
Backup базы
    #32920306
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bansheeА обязательно с курсором делать?
Нет. Обязательно с COMMIT :)
...
Рейтинг: 0 / 0
Backup базы
    #32920852
banshee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. вот так, правильно? :)

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
Backup базы
    #32921842
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Backup базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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