Способы выполнения этой задачи зависят от версии ASE и платформы, на которой он работает.
Unix-подобные системы.
Здесь стандартный способ обрезать открытый другим процессом - это скопировать в него файл /dev/null. Т.е. :
cat /dev/null > /opt/sybase/YOUSERVERLOG.log
В вашей системе путь к файлу лога может быть другим.
Для выполнения этой команды из ASE можно воспользоваться системной процедурой xp_cmdshell.
Надо также заметить что в силу особенностей работы файловой подсистемы этих ОС, удаление файла лога или переименование пустого файла в файл лога не поможет - ASE будет все так же писать в свой старый файл.
Win32 (все Windows-ы)
Лог может быть обрезан открытием файла лога в редакторе Notepad, удалением всех строк и сохранением его. На самом деле конечно это может быть любой редактор, который не открывает файл в монопольном режиме для чтения и записи.
Кроме того, нужно отметить, что все особенности файловой системы Unix-подобных систем присущи и файловой системе NTFS, так что трюк с cat /dev/null > yourlog
также работает. Утилиту cat можно взять например в пакете CygWin.
Начиная с ASE 12.5 лог можно привязать к прокси-таблице ( в 12.5 появилась возможность делать прокси-таблицы на файлы ОС ) и тогда лог очищается коммандой
SQL>truncate table MYERRORLOG
где MYERRORLOG - прокси-таблица, привязанная к файлу лога ASE.
Этот способ работает на всех платформах, где работает ASE.
понедельник, 22 марта 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий