Журнал регистрации - как убрать запись в ЖР событий Сеанс Завершен
Подскажите как убрать из Журнала Регистрации запись событий "Сеанс Завершен" !
1С 8.3 SQL УПП
Поискал в инете, создал обработку и выполнил такой код:
Затем перегрузил Сервер, не помогло ! РегламентныеЗадания которые выполняются часто, постоянно пишут события в ЖурналРегистрации. В итоге загрузка сервера 95-100%
1С 8.3 SQL УПП
Поискал в инете, создал обработку и выполнил такой код:
ИспользованиеСобытия = Новый ИспользованиеСобытияЖурналаРегистрации;
ИспользованиеСобытия.Использование = Ложь;
УстановитьИспользованиеСобытияЖурналаРегистрации("_$Session$_.Finish", ИспользованиеСобытия);Затем перегрузил Сервер, не помогло ! РегламентныеЗадания которые выполняются часто, постоянно пишут события в ЖурналРегистрации. В итоге загрузка сервера 95-100%
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Блин, тоже самое! Не могу понять, как отключить...
P.S. На партнерском форуме было сообщение, что в 8.3.6 не работает.
Сейчас напишу на v8@1c.ru про баг.
P.S. На партнерском форуме было сообщение, что в 8.3.6 не работает.
Сейчас напишу на v8@1c.ru про баг.
Итак, я разобрался как можно существенно сократить "Журнал регистрации" удалив из него сообщения о фоновых заданиях;
1. Скачиваем SQLite 3 он состоит из трех файлов: sqldiff.exe sqlite3.exe sqlite3_analyzer.exe
2. Копируем 1cv8.lgd в папку с этими тремя файлами;
3. Запускаем sqlite3.exe (я запускал из под FAR'а)
4. Выполняем следующие команды:
(sel ect и fr om и where - слитно* баг на форуме какой-то)
(не забывайте ставить ; в конце строки !)
.open 1cv8.lgd
sel ect * fr om AppCodes where name='%Background%';
// Запоминаем code=2 (как #A)
sel ect * fr om ComputerCodes where name='%-1C-%';
// в условие где "-1С-" подставляем имя сервера 1С (которое указываем при регистрации Базы)
// Запоминаем code=1 (как #C)
sel ect * fr om EventCodes where name='%Begin%';
// Запоминаем code=3 (как #1)
sel ect * fr om EventCodes where name='%Commit%';
// Запоминаем code=4 (как #2)
sel ect * fr om EventCodes where name='%Finish%';
// Запоминаем code=2 (как #3)
.changes on
delete fr om EventLog wh ere (eventCode=#1 OR eventCode=#2 OR eventCode=#3) AND computerCode=#C AND appCode=#A;
// Внимание! Удаление в 7GB файле длилось 15 мин на компе i7 3.2 8Gb-оперативки
// в папке появляется файл 1cv8_journal и постепенно растет ...
vacuum;
// Еще примерно 7-8 мин
.exit
Итог наших манипуляций можно оценить по размеру файла 1cv8.lgd
В самом начале:
dir 1cv8.lgd
После манипуляций:
Полезная ссылка:
1. Скачиваем SQLite 3 он состоит из трех файлов: sqldiff.exe sqlite3.exe sqlite3_analyzer.exe
2. Копируем 1cv8.lgd в папку с этими тремя файлами;
3. Запускаем sqlite3.exe (я запускал из под FAR'а)
4. Выполняем следующие команды:
(sel ect и fr om и where - слитно* баг на форуме какой-то)
(не забывайте ставить ; в конце строки !)
.open 1cv8.lgd
sel ect * fr om AppCodes where name='%Background%';
code|name
2|"BackgroundJob"// Запоминаем code=2 (как #A)
sel ect * fr om ComputerCodes where name='%-1C-%';
// в условие где "-1С-" подставляем имя сервера 1С (которое указываем при регистрации Базы)
code|name
1|"VIRT-1C-01"// Запоминаем code=1 (как #C)
sel ect * fr om EventCodes where name='%Begin%';
code|name
3|"_$Transaction$_.Begin"// Запоминаем code=3 (как #1)
sel ect * fr om EventCodes where name='%Commit%';
code|name
4|"_$Transaction$_.Commit"// Запоминаем code=4 (как #2)
sel ect * fr om EventCodes where name='%Finish%';
code|name
2|"_$Transaction$_.Finish"// Запоминаем code=2 (как #3)
.changes on
delete fr om EventLog wh ere (eventCode=#1 OR eventCode=#2 OR eventCode=#3) AND computerCode=#C AND appCode=#A;
changes: 41593705 total_changes: 41593705 // Внимание! Удаление в 7GB файле длилось 15 мин на компе i7 3.2 8Gb-оперативки
// в папке появляется файл 1cv8_journal и постепенно растет ...
vacuum;
// Еще примерно 7-8 мин
.exit
Итог наших манипуляций можно оценить по размеру файла 1cv8.lgd
В самом начале:
dir 1cv8.lgd
11.02.2016 09:37 7 288 039 424 1Cv8.lgdПосле манипуляций:
11.02.2016 09:37 180 030 464 1Cv8.lgdПолезная ссылка:
До 1 Гб скрипт работает, свыше 1Гб получаем:
database disk image is malformed
Как можно обойти? Логи растут как на дрожжах.
database disk image is malformed
Как можно обойти? Логи растут как на дрожжах.
Завтра напишу подробный пост.
Добился ускорения процесса 1cv8.lgd размером 20 GB ужимается до 400 М за 5 мин.
Добился ускорения процесса 1cv8.lgd размером 20 GB ужимается до 400 М за 5 мин.
Наконец пришло время очередной чистки, а файл увеличился аж до 20 Gb. Тут даже на мега серваке это займет час или два. Поэтому пришлось подумать, как можно ускорить процесс.
Решение оказалось лежит на поверхности. После очистки мы получаем файл, значительно меньшего размера ... Это навело на простую мысль, - создать НОВУЮ базу и импортировать в нее оставшиеся данные (равные размеру очищенного файла).
1. Проверяем версию PowerShell
Запустите PowerShell, в окне консоли введите $PSVersionTable
Это означает что установлена версия 4.0
2. Скачиваем библиотеку SQLite c учетом нашей версии 4.0 со страницы
Setups for 32-bit Windows (.NET Framework 4.0)
Setups for 64-bit Windows (.NET Framework 4.0)
Инсталлируем.
3. Создаем скрипт файл с расширением .ps1 например CutDB.ps1 - см:вложение
В этом скрипте Вам нужно заменить пути на свои:
Add-Type -Path "C:\Program Files\System.Data.SQLite\2010\bin\System.Data.SQLite.dll"
По этому пути должна лежать System.Data.SQLite.dll
C:\Vital\1cv9.lgd
C:\Vital\1cv8.lgd
Замените имя сервера на свое:
"SMF-1C-01"
SMF-1C-02"
Если у Вас один сервер, дважды проставьте "SRV-1C-01" и "SRV-1C-01"
закомментируйте строчку с помощью #
# $computerCode2 = $data.tables.rows[1].code
Выполните скрипт, правая кнопка на файле CutDB.ps1 Выполнить с помощью PowerShell
Решение оказалось лежит на поверхности. После очистки мы получаем файл, значительно меньшего размера ... Это навело на простую мысль, - создать НОВУЮ базу и импортировать в нее оставшиеся данные (равные размеру очищенного файла).
1. Проверяем версию PowerShell
Запустите PowerShell, в окне консоли введите $PSVersionTable
$PSVersionTable
CLRVersion 4.0.30319.34014 <- Нас интересует эта строчка !
Это означает что установлена версия 4.0
2. Скачиваем библиотеку SQLite c учетом нашей версии 4.0 со страницы
Setups for 32-bit Windows (.NET Framework 4.0)
Setups for 64-bit Windows (.NET Framework 4.0)
Инсталлируем.
3. Создаем скрипт файл с расширением .ps1 например CutDB.ps1 - см:вложение
Add-Type -Path "C:\Program Files\System.Data.SQLite\2010\bin\System.Data.SQLite.dll"
$con = New-Object -TypeName System.Data.SQLite.SQLiteConnection
$con.ConnectionString = "Data Source=C:\Vital\1cv9.lgd"
$con.Open()
$sql = $con.CreateCommand()
$sql.CommandText = "ATTACH DATABASE 'C:\Vital\1cv8.lgd' as v8"
$sql.ExecuteNonQuery()
$sql = $con.CreateCommand()
"AppCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS AppCodes AS SEL ECT * FR OM v8.AppCodes"
$sql.ExecuteNonQuery()
"ComputerCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS ComputerCodes AS SEL ECT * FR OM v8.ComputerCodes"
$sql.ExecuteNonQuery()
"ComputerToUserCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS ComputerToUserCodes AS SEL ECT * FR OM v8.ComputerToUserCodes"
$sql.ExecuteNonQuery()
"EventCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS EventCodes AS SEL ECT * FR OM v8.EventCodes"
$sql.ExecuteNonQuery()
"EventLogMetadata"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS EventLogMetadata AS SEL ECT * FR OM v8.EventLogMetadata"
$sql.ExecuteNonQuery()
"MetadataCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS MetadataCodes AS SEL ECT * FR OM v8.MetadataCodes"
$sql.ExecuteNonQuery()
"PrimaryPortCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS PrimaryPortCodes AS SEL ECT * FR OM v8.PrimaryPortCodes"
$sql.ExecuteNonQuery()
"SecondaryPortCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS SecondaryPortCodes AS SEL ECT * FR OM v8.SecondaryPortCodes"
$sql.ExecuteNonQuery()
"SessionDataCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS SessionDataCodes AS SEL ECT * FR OM v8.SessionDataCodes"
$sql.ExecuteNonQuery()
"SessionDataSplits"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS SessionDataSplits AS SEL ECT * FR OM v8.SessionDataSplits"
$sql.ExecuteNonQuery()
"SessionHosts"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS SessionHosts AS SEL ECT * FR OM v8.SessionHosts"
$sql.ExecuteNonQuery()
"SessionParamCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS SessionParamCodes AS SEL ECT * FR OM v8.SessionParamCodes"
$sql.ExecuteNonQuery()
"SessionUsers"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS SessionUsers AS SEL ECT * FR OM v8.SessionUsers"
$sql.ExecuteNonQuery()
"UserCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS UserCodes AS SEL ECT * FR OM v8.UserCodes"
$sql.ExecuteNonQuery()
"WorkServerCodes"
$sql.CommandText = "CRE ATE TABLE IF NOT EXISTS WorkServerCodes AS SEL ECT * FR OM v8.WorkServerCodes"
$sql.ExecuteNonQuery()
"-------------------------------------"
$sql = $con.CreateCommand()
$sql.CommandText = "SEL ECT * FR OM AppCodes WHERE name=@BackgroundJob"
[void]$sql.Parameters.AddWithValue("@BackgroundJob", '"BackgroundJob"');
$adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $sql
$data = New-Object System.Data.DataSet
[void]$adapter.Fill($data)
$appCode = $data.tables.rows[0].code
# DEBUG: Show recordset
# $data.tables.rows
$sql = $con.CreateCommand()
$sql.CommandText = "SEL ECT * FR OM ComputerCodes WHERE (name=@Comp1 OR name=@Comp2)"
[void]$sql.Parameters.AddWithValue("@Comp1", '"SMF-1C-01"');
[void]$sql.Parameters.AddWithValue("@Comp2", '"SMF-1C-02"');
$adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $sql
$data = New-Object System.Data.DataSet
[void]$adapter.Fill($data)
# DEBUG: Show recordset
# $data.tables.rows
$computerCode1 = $data.tables.rows[0].code
$computerCode2 = $data.tables.rows[1].code
$sql = $con.CreateCommand()
$sql.CommandText = "SEL ECT * FR OM EventCodes where name Like @Begin OR name Like @Commit OR name Like @Finish"
[void]$sql.Parameters.AddWithValue("@Begin", '%Begin%');
[void]$sql.Parameters.AddWithValue("@Commit", '%Commit%');
[void]$sql.Parameters.AddWithValue("@Finish", '%Finish%');
$adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $sql
$data = New-Object System.Data.DataSet
[void]$adapter.Fill($data)
# DEBUG: Show recordset
# $data.tables.rows
$eventCode1 = $data.tables.rows[0].code
$eventCode2 = $data.tables.rows[1].code
$eventCode3 = $data.tables.rows[2].code
"Selecting EventLog (~5 min)"
$sql = $con.CreateCommand()
$sql.CommandText = "CRE ATE TABLE EventLog AS SELECT * FR OM v8.EventLog WH ERE NOT ((eventCode=@eventCode1 OR eventCode=@eventCode2 OR eventCode=@eventCode3) AND (computerCode=@computerCode1 OR computerCode=@computerCode2) AND appCode=@appCode)"
[void]$sql.Parameters.AddWithValue("@eventCode1", $eventCode1);
[void]$sql.Parameters.AddWithValue("@eventCode2", $eventCode2);
[void]$sql.Parameters.AddWithValue("@eventCode3", $eventCode3);
[void]$sql.Parameters.AddWithValue("@computerCode1", $computerCode1);
[void]$sql.Parameters.AddWithValue("@computerCode2", $computerCode2);
[void]$sql.Parameters.AddWithValue("@appCode", $appCode);
$sql.ExecuteNonQuery()
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
$sql.Dispose()
$con.Close()
$con.Dispose()
ПоказатьВ этом скрипте Вам нужно заменить пути на свои:
Add-Type -Path "C:\Program Files\System.Data.SQLite\2010\bin\System.Data.SQLite.dll"
По этому пути должна лежать System.Data.SQLite.dll
C:\Vital\1cv9.lgd
C:\Vital\1cv8.lgd
Замените имя сервера на свое:
"SMF-1C-01"
SMF-1C-02"
Если у Вас один сервер, дважды проставьте "SRV-1C-01" и "SRV-1C-01"
закомментируйте строчку с помощью #
# $computerCode2 = $data.tables.rows[1].code
Выполните скрипт, правая кнопка на файле CutDB.ps1 Выполнить с помощью PowerShell
Настроил у себя этот скрипт. после выполнения создается новый файл 1cv9.lgd я так понимаю это обрезаный журнал? А что с ним дальше то делать? Я пробовал заменить файл оригинал журнала регистрации, но потом при запуске 1с выдает ошибку
Ошибка формата файла журнала регистрации
по причине:
sqlite3_exec failed: attempt to write a readonly database
db: C:\Program Files (x86)\1cv8\srvinfo\reg_1541\******************\1Cv8Log\1Cv8.lgd
sql: CRE ATE INDEX IF NOT EXISTS EventLog_idx_date ON EventLog (date);
по причине:
sqlite3_exec failed: attempt to write a readonly database
db: C:\Program Files (x86)\1cv8\srvinfo\reg_1541\******************\1Cv8Log\1Cv8.lgd
sql: CRE ATE INDEX IF NOT EXISTS EventLog_idx_date ON EventLog (date);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
