Полезные скрипты для работы с БД. Применительно к базам данных Abonement/Shelter. 1. Удаление логов из базы данных. 1.1.  Удаление логирования из таблицы LOG$FIELDS delete from log$fields; commit;                  1.2. Удаление логирования из таблицы LOG$TABLES delete from log$tables; commit; 1.3. Для удаления логов за определенный период необходимо выполнить следующий скрипт:          delete from LOG$TABLES LT where LT.DATE_TIME < d2dbl('now') - 30;          delete from LOG$FIELDS LF where not LF.LOG_TABLES_ID in (select LT.ID from LOG$TABLES LT where LT.ID = LF.LOG_TABLES_ID);          commit; После выполнения данного скрипта, в БД останутся логи за 30 дней, остальные будут удалены.   Для уменьшения размера БД необходимо сделать backup / restore. 1.4. Для автоматического удаления логов необходимо в «Планировщик заданий» Windows добавить простую задачу с выполнением .bat файла, рядом с котором должен быть файл script.sql.   Содержание .bat файла:                  @rem Указать путь до isql.exe                  @echo off                  set isql="C:\Program Files (x86)\Shelter\Firebird\bin\isql.exe"                  set sqlPath=%~dp0                  set sqlFile=%sqlPath%script.sql                  %isql% -input %sqlFile% Содержание script.sql: CONNECT 'localhost/3080:C:\_BASE\SHELTER.FDB' user 'ucs' PASSWORD 'ucs';                  delete from LOG$TABLES LT where LT.DATE_TIME < d2dbl('now') - 30;                  delete from LOG$FIELDS LF where not LF.LOG_TABLES_ID in (select LT.ID from LOG$TABLES LT where LT.ID = LF.LOG_TABLES_ID);                  commit; 2. Запрос и скрипт на перестыковку платежей. 2.1. Сначала выполняем запрос в разделе Tools - SQL Editor. Запрос: select distinct cc.CHK from CHECK_CONTENTS cc where not exists(select i.id from INVOICES i where i.id = cc.CHK) order by 1 2.2. Если после выполнения запроса в таблице появляются данные (таблица не пуста), то применяем скрипт. Скрипт: delete from CHECK_CONTENTS_JOINS ccd where ccd.CHK in ( select distinct cc.CHK from CHECK_CONTENTS cc where not exists(                             select i.id from INVOICES i where i.id = cc.CHK) ); ---------------------delete from CHECK_CONTENTS ccd where ccd.CHK in (select distinct cc.CHK from CHECK_CONTENTS cc where not exists(select i.id from INVOICES i where i.id = cc.CHK) ); 3. Скрипт для смены адреса глобального сервера обновлений. 3.1. Скрипт: update DEFAULT_VALUES dv set dv.STRVALUE = 'udpate.shelter.ru' where dv.STRVALUE = 'shelter2.ucs.ru' // shelter only !!? убрать 4. Получение сведений о клиентских приложениях. 4.1. Через SQL-Editor: SELECT MON$USER, MON$REMOTE_ADDRESS, MON$REMOTE_PID, MON$TIMESTAMP FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION 4.2. Отключение всех соединений с базой, за исключением своего: DELETE FROM MON$ATTACHMENTSWHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION Обязательный бэкап/рестор после выполнения скриптов!!!