Страница 1 из 4

FossBARC и Архивная база

Добавлено: 22 май 2009, 09:07
VakulenkoIA
Доброе время суток.

FossMail версии 4.4.4.0

Рабочая база разрослась и запросы выполняються долго. Заглянул в Архивную базу, а там даже таблицы не создались.

Фрагмент конфига:

Код: Выделить всё

[FBARC]
; Сколько дней хранить данные в рабочей базе,
; после чего они переносятся в архивную базу
#WORKBASE_DAYS=30
; За сколько дней от #WORKBASE_DAYS переносить данные (умолчание - 365)
;#REMOVED_DAYS=365
; Сколько дней хранить данные в архивной базе
; после чего они удаляются окончательно
; (при запуске с параметром -auto)
; 0 - не удалять вообще
#ARCBASE_DAYS=0
; пример коннекта к MS SQL
;#ARC_CONNECTION_STR=DSN=FOSS;DBQ=C:\Fossmail32\BASE\FOSSARC.MDB;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;
#ARC_CONNECTION_STR=DSN=FossArcMS;SERVER=S-014-06;UID=sa;PWD=********
#IGNORE_ERRORS=23000,23s00, 23400
ConnectionString взял с [MSERVER] :

Код: Выделить всё

#CONNECTION_STR=DSN=FossMS;SERVER=S-014-06;UID=sa;PWD=*******

Подскажите как должно быть?

Re: FossBARC и Архивная база

Добавлено: 22 май 2009, 13:15
FossWare
Рабочая база разрослась и запросы выполняються долго. Заглянул в Архивную базу, а там даже таблицы не создались.
Архивирование БД нужно запускать в ручную. Автоматического режима для архивирования БД не предусмотрено.

Re: FossBARC и Архивная база

Добавлено: 22 май 2009, 15:20
VakulenkoIA
Самому скрипт писать? или есть чтото в сервере?

Re: FossBARC и Архивная база

Добавлено: 22 май 2009, 16:33
FossWare
Самому скрипт писать?
Да, если вы хотите чтобы в дальнейшем архивация БД выполнялась по расписанию без участия оператора, то нужно написать либо скрипт, либо батник и завести учетную запись в планировщике. Для того чтобы архивация запускалась в "тихом режиме" нужно указать такую строку fbarc -с d:\foss\host.cfg -l –e [-auto].
где host.cfg - имя файла конфигурации системы FOSSMAIL32
-e - вести файл ошибок
-l - вести файл сообщений
-auto – запуск программы в автоматическом режиме
Более подробно об этом можно прочесть в инструкции по настройке FBArc которая находится в каталоге сервера в папке Doc, fbarc.doc.

Re: FossBARC и Архивная база

Добавлено: 23 май 2009, 12:44
VakulenkoIA
Спасибо. Посмотрел.
Запускал fbarc в режиме окна. При перемещении записей в архивную базу. Тормозит на одной записи с номером 37000, и архивная юаза остается пустая. Пробовал удалить эту запись, непомогло.

Буду пробовать писать скрипт.

Re: FossBARC и Архивная база

Добавлено: 23 май 2009, 17:31
VakulenkoIA
Чтото типа такого:

Код: Выделить всё

print '['+CONVERT(varchar(10), GETDATE(), 4) + ' ' + CONVERT(varchar(8), GETDATE(), 108)+'] '+'Начинаю...'
print ''
print 'Устанавливаю текущую базу : FossMail'
USE FossMail
GO

declare @CurYear varchar(4)
set @CurYear = CONVERT(varchar(4),DATEPART(yyyy,GETDATE()))

declare @CurMonth varchar(2)
declare @NCurMonth varchar(2)
declare @int_CurMonth int
set @int_CurMonth = DATEPART(m,GETDATE())
set @CurMonth = CONVERT(varchar(2),@int_CurMonth)
if @int_CurMonth<10 set @CurMonth='0'+@CurMonth

declare @SearchDate varchar(7)
set @SearchDate = @CurYear+@CurMonth+'%';

print ''
print 'Вичислил текущую дату для отбора ['+@SearchDate+']' 

print ''
print 'Копирую записи MESSLIST в архивную базу' 
insert into FossMailArc.dbo.MESSLIST
	select * from dbo.MESSLIST WHERE (IT not LIKE @SearchDate)

print ''
print 'Создаю курсор на MESSLIST с фильтром IT='+@SearchDate

DECLARE CursorSearchMASSLIST CURSOR FOR SELECT ID FROM dbo.MESSLIST WHERE (IT not LIKE @SearchDate)
OPEN CursorSearchMASSLIST

DECLARE @ID_O varchar(42)

WHILE 1=1 BEGIN
  FETCH FROM CursorSearchMASSLIST INTO @ID_O
  IF @@fetch_status=-1 
      BREAK
  IF @@fetch_status=-2
      CONTINUE
	PRINT ''
	PRINT '  : '+@ID_O
	PRINT '      Копирую запис(и) FILELIST'
		insert into FossMailArc.dbo.FILELIST
			select * from dbo.FILELIST WHERE (ID = @ID_O)
	PRINT '      Удаляю запис(и) FILELIST'
		delete from dbo.FILELIST WHERE (ID = @ID_O)
	PRINT '      Копирую запис(и) RECPLIST'
		insert into FossMailArc.dbo.RECPLIST
			select * from dbo.RECPLIST WHERE (ID = @ID_O)
	PRINT '      Удаляю запис(и) RECPLIST'
		delete from dbo.RECPLIST WHERE (ID = @ID_O)
 END

DEALLOCATE CursorSearchMASSLIST

print ''
print 'Удаляю старые записи MESSLIST' 


delete from dbo.MESSLIST WHERE (IT not LIKE @SearchDate)

GO
print ''
print '['+CONVERT(varchar(10), GETDATE(), 4) + ' ' + CONVERT(varchar(8), GETDATE(), 108)+'] '+'Завершил :)'
Скрипт переносит записи в архивную базу старше первого дня текущего месяца.

Re: FossBARC и Архивная база

Добавлено: 25 май 2009, 08:27
lyk
3700 - "ошибка доступа или синтаксическая ошибка". Что именно - в логе должна быть вся возвращаемая строка. Надо добиться нормальной работы при ручном запуске, а после - можно и в автомате запускать. Кстати - какая СУБД?

Re: FossBARC и Архивная база

Добавлено: 01 июн 2009, 07:53
VakulenkoIA
lyk писал(а):3700 - "ошибка доступа или синтаксическая ошибка". Что именно - в логе должна быть вся возвращаемая строка. Надо добиться нормальной работы при ручном запуске, а после - можно и в автомате запускать. Кстати - какая СУБД?
СУБД - MSSQL 2005 Express.

Проверено, работает. Синтаксических ошибок нет. Скрипт не идеален. Нет реакций на случай ошибок. Но это как вариант...
Доработать попробую.

Re: FossBARC и Архивная база

Добавлено: 01 июн 2009, 15:12
VakulenkoIA
Более полноценный скрипт v1.0
MoveOldToArc_1.0.zip
(1.25 КБ) 511 скачиваний
А лог получаю такой:

Код: Выделить всё

[01.06.09 09:51:48] Начинаю...
 
Устанавливаю текущую базу : FossMail
 
Вичислил текущую дату для отбора [200906%]
 
Копирую записи MESSLIST в архивную базу

(97754 row(s) affected)
 
Создаю курсор на MESSLIST с фильтром IT=200906%
 
...
...

      Копирую запис(и) RECPLIST

(1 row(s) affected)
      Удаляю запис(и) RECPLIST

(1 row(s) affected)
 
  : S~20090526090713ACVP2NLQJKNARMF
      Копирую запис(и) FILELIST

(1 row(s) affected)
      Удаляю запис(и) FILELIST

(1 row(s) affected)
      Копирую запис(и) RECPLIST

(1 row(s) affected)
      Удаляю запис(и) RECPLIST

(1 row(s) affected)
 
Удаляю старые записи MESSLIST

(97754 row(s) affected)
 
[01.06.09 09:54:23] Завершил :)

Re: FossBARC и Архивная база

Добавлено: 01 июн 2009, 19:12
lyk
Есть возможность игнорировать некоторые коды ошибок - в host.cfg/[fbark] добавить в стоку игнорирования код ошибки
#IGNORE_ERRORS = 3700;//23000,23s00, 23400
Правда, я не понял, почему эта ошибка в принципе появляется.