Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
В настройках программы (в окне "Администрирование") вы можете убрать логирование справочник товаров поставщиков, что так же сократит нагрузку на диск при записи прайс-листа.
Удалить историю справочник товаров поставщиков можно следующим SQL-запросом:
Код
set nocount on;
DECLARE @iS_ID int, @iSG_ID int, @iLOG_ID int, @sLOG_FIELD_NAME varchar(150);
DECLARE cSuppliers CURSOR LOCAL FOR
select
S_ID
from TBL_SUPPLIERS s
-- where s.S_ID = 781
order by s.S_ID
;
OPEN cSuppliers;
FETCH NEXT FROM cSuppliers INTO @iS_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
DECLARE cSuppliersGoods CURSOR LOCAL READ_ONLY FOR
select
SG_ID
from TBL_SUPPLIERS_GOODS sg
where sg.SG_S_ID = @iS_ID;
PRINT @iS_ID;
OPEN cSuppliersGoods;
FETCH NEXT FROM cSuppliersGoods INTO @iSG_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
DECLARE cLog CURSOR LOCAL READ_ONLY FOR
select LOG_FIELD_NAME
from TBL_LOG l
where l.LOG_TBL_NAME = 'TBL_SUPPLIERS_GOODS'
and l.LOG_PK = @iSG_ID
and l.LOG_TYPE = 2
group by LOG_FIELD_NAME
having count(*) > 1;
OPEN cLog;
FETCH NEXT FROM cLog INTO @sLOG_FIELD_NAME;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
DECLARE cLogValues CURSOR LOCAL READ_ONLY FOR
select l.LOG_ID
from TBL_LOG l
where l.LOG_TBL_NAME = 'TBL_SUPPLIERS_GOODS'
and l.LOG_PK = @iSG_ID
and l.LOG_TYPE = 2
and l.LOG_FIELD_NAME = @sLOG_FIELD_NAME
and not l.LOG_ID in (
select TOP 1 l.LOG_ID
from TBL_LOG l
where l.LOG_TBL_NAME = 'TBL_SUPPLIERS_GOODS'
and l.LOG_PK = @iSG_ID
and l.LOG_TYPE = 2
and l.LOG_FIELD_NAME = @sLOG_FIELD_NAME
order by LOG_DATE DESC
)/* FOR UPDATE*/;
OPEN cLogValues;
FETCH NEXT FROM cLogValues INTO @iLOG_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
BEGIN TRY
BEGIN TRANSACTION;
/*
INSERT INTO TBL_LOG_ARCHIVE ([LOG_ID], [LOG_TBL_NAME], [LOG_PK], [LOG_FIELD_NAME], [LOG_OLD_VALUE], [LOG_TBL_CHILD_NAME], [LOG_NEW_VALUE], [LOG_TYPE], [LOG_DATE], [LOG_USER], [LOG_PK_REF_OLD], [LOG_PK_REF_NEW], [LOG_CHILD_PK])
SELECT [LOG_ID], [LOG_TBL_NAME], [LOG_PK], [LOG_FIELD_NAME], [LOG_OLD_VALUE], [LOG_TBL_CHILD_NAME], [LOG_NEW_VALUE], [LOG_TYPE], [LOG_DATE], [LOG_USER], [LOG_PK_REF_OLD], [LOG_PK_REF_NEW], [LOG_CHILD_PK]
FROM TBL_LOG
WHERE LOG_ID = @iLOG_ID;
*/
DELETE FROM TBL_LOG
WHERE LOG_ID = @iLOG_ID;
COMMIT;
END TRY
BEGIN CATCH
ROLLBACK;
END CATCH;
FETCH NEXT FROM cLogValues INTO @iLOG_ID;
END;
CLOSE cLogValues;
DEALLOCATE cLogValues;
FETCH NEXT FROM cLog INTO @sLOG_FIELD_NAME;
END;
CLOSE cLog;
DEALLOCATE cLog;
FETCH NEXT FROM cSuppliersGoods INTO @iSG_ID;
END;
CLOSE cSuppliersGoods;
DEALLOCATE cSuppliersGoods;
FETCH NEXT FROM cSuppliers INTO @iS_ID;
END;
CLOSE cSuppliers;
DEALLOCATE cSuppliers;
При создании резервной копии базы данных запись об этом событии логируется и соответственно отображается в списке бекапов.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Откройте в программе справочник товаров поставщиков и посмотрите на историю изменений какого-либо товара прайс-листов, там должны остаться только первые и последние записи, а все промежуточные - удалены.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Размер базы данных зависит не только от размера самих данных, но и от служебной информации, в частности индексов которые используются для осуществления быстрой выборки данных и могут занимать больше места чем сами данные. Вы можете удалить индексы в таблице логов (TBL_LOG) на свой страх и риск, но тогда мы не сможем принять во внимание какие-либо жалобы о проблемах со скоростью работы программы, записи данных (прайсов, товаров и т.п.).
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Управление логированием в справочнике товаров пока не предусмотрено и не планируется в ближайшем будущем, потому изменения товаров - записываются в базу данных.
Количество сообщений
107
Зарегистрирован:
27-02-2016, 15:29:39
в итоге перенес все в новую пустую базу.
2ALL - мораль всем - если проект предполагается большой - сразу отключать логирование товаров поставщиков. с ежедневным обновлением по 40 поставщикам база как на дрожжах растет
и не заливать каких попало поставщиков ради экспериментов - если уж захотелось - делать это в отдельной базе