[ТЕМА ЗАКРЫТА]
02.03.2013 23:55
Роллан
 
Доброго времени суток!
в последнее время мой сервер стал жутко тормозить, работать было не возможно. когда проверил сам файл БД, оказалось что он весить около 18Гб. по сравнению с другими магазинами это на несколько раз больше. решил сделать подрезку БД, с помощью задачи в майнтэйнс Shrink Database Task, прошла успешно, сервак стал шустрее работать, но объем файла БД не уменьшилось и при бэкапе тоже с каждым разом увеличивается (весит 14 Гб)
я знаю что шринк приводит к жестокой фрагментации БД, но пришлось это сделать.
кто сталкивался с такой проблемой, подскажите?
03.03.2013 12:19
vitamin
 
что пишет лог dbservice? чеки уходят в архив? почистить таблицы логов загрузок и ошибок
04.03.2013 07:49
Роллан
 
Прошу сильно не судить, т.к. sql знаю не очень хорошо.

что пишет dbservice выложил лог-файл сюда, а то текста много.
чеки уходят в архив? - сомневаюсь, когда делается бэкап SES Archive каждый файл весит 1,89 Мб. т.е. не увеличивается. если я как то не прав, как проверить?
почистить таблицы логов загрузок и ошибок - это я не понял..
и еще такой момент, у меня в sql agent задана задача делать бэкап в папку D:\BackUP SQL\SES, задача выполняется нормально, но еще дополнительно делает тот же бэкап SES и SES Archive в папку D:\SET\BackUp, а где последняя задача прописана я не могу найти.
04.03.2013 07:52
Роллан
 
вот сам лог...
Вложения
Тип файла: txt Main.log.2013-03-03.txt (16.3 Кб, 199 просмотров)
04.03.2013 09:16
Shift
 
Включите опцию xp_cmdshell
Цитата:
exec sp_configure 'advanced options',1
go
reconfigure
go
exec sp_configure 'xp_cmdshell',1
go
reconfigure
go
Добавлено через 6 минут 23 секунды
И ещё ругается на:
Цитата:
03.03.2013 03:00:22.402 ERROR: ChequeArchive: doStep exception; command = 'EXEC cp_MoveChequeToArchive :0'
com.microsoft.sqlserver.jdbc.SQLServerException: Insert Error: Column name or number of supplied values does not match table definition.
Возможно как-то криво обновилось.
04.03.2013 09:19
Роллан
 
честно, я такие скрипты не очень понимаю
04.03.2013 09:21
Shift
 
Открываешь SQL Server Managment studio
создаёшь новый запрос и выполняешь на базе master
04.03.2013 09:24
Роллан
 
можно будет по подробнее? у меня база лежит в SES.
04.03.2013 09:32
Shift
 
Ещё проще:
1. создать файл text.sql
записать в нём
Цитата:
exec sp_configure 'advanced options',1
go
reconfigure
go
exec sp_configure 'xp_cmdshell',1
go
reconfigure
go
2. запустить cmd
3. написать
Цитата:
sqlcmd -S сервер - U пользватель -P пароль -d master -i путь\text.sql
04.03.2013 10:44
vitamin
 
03.03.2013 03:00:22.402 ERROR: ChequeArchive: doStep exception; command = 'EXEC cp_MoveChequeToArchive :0'
com.microsoft.sqlserver.jdbc.SQLServerException: Insert Error: Column name or number of supplied values does not match table definition.

ses_archive восстанавливаем из дистриба.
04.03.2013 11:44
Роллан
 
как я понял, данные в архив не перемещаются так?
а как восстановить архив и дистрибьютива?
еще не могли бы объяснить, в архив данные после какого то времени перемещаются?
04.03.2013 18:46
jurah
 
В дистрибутиве присутствуют бэкапы всех баз. Предлагается забить на все данные, которые есть в архивной базе и сделать ее заново.
По поводу перемещения -Оборудование-настройки-сервисные функции - количество дней оставляемых в оперативной базе...
05.03.2013 07:24
Роллан
 
Ребята, сейчас вообще хуже стало, сервер до невозможности тормозит, оперативка на пределе, выделял память с файла подкачки и она тоже на пределе работает, вчерашние закрытые смены с касс висят как будто они не закрыты, при проверке смен пишет что не закрыта, оперативная продажа на данный момент с касс не идут. из за того что БД большая может возникать такая проблема? подозревал что какой то червяк подсел на сервер, проверил касперычем и доктором веб, оба ничего не нашли.
05.03.2013 07:43
OlegON
 
обмена со свопом не должно быть, а 18Гб база - смешная. надеюсь, антивирусов там на постоянку не установлено? запусти Пуск-Выполнить-perfmon.msc и приведи скриншот, потом закладки таскменеджера с процессами (показывать всех пользователей), верхушку по памяти и закладку с графиками.
05.03.2013 08:13
Роллан
 
несколько антивирусов не стоит конечно, перед тем как проверять вторым, первый отключал, а так стоит касперыч 6 workstations, поочередно отключал службы sql server, при отключении sql server agent, нагрузка на оперативку сразу же упала от 4,3 Гб до 600-800 Мб
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 328
Размер:	108.2 Кб
ID:	1795   Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 342
Размер:	112.0 Кб
ID:	1796   Нажмите на изображение для увеличения
Название: 3.JPG
Просмотров: 323
Размер:	106.9 Кб
ID:	1797   Нажмите на изображение для увеличения
Название: 4.JPG
Просмотров: 301
Размер:	110.1 Кб
ID:	1798   Нажмите на изображение для увеличения
Название: 5.JPG
Просмотров: 335
Размер:	110.8 Кб
ID:	1799  

Нажмите на изображение для увеличения
Название: 6.JPG
Просмотров: 340
Размер:	110.6 Кб
ID:	1800   Нажмите на изображение для увеличения
Название: 7.JPG
Просмотров: 332
Размер:	118.7 Кб
ID:	1801  
05.03.2013 08:34
OlegON
 
на сервере БД не должно быть антивирусов установлено, это раз. во-вторых, что за java-процессы там ворохом? система свопится жутко, либо мусором забили, либо распределение памяти неверное
05.03.2013 08:44
Shift
 
Не знаю какой SQL стоит (не озвучено), но у меня на MS SQL Express 2005 - 4Гб предел. Так что если не хватает места оперативные данные могут и не приходить. Попробуй для начала вручную почистить таблицы jobsData, jobsQueue, jobsDataLog, jobsQueueLog. Это должно несколько уменьшить базу.
05.03.2013 11:07
vitamin
 
Тормозит сервак служба кристалла, не помню какая, она не любит большой размер бд(в диспетчере задач процесс явы забивает процессор). Поэтому включить xpcmdshell и оле автоматизацию, восстановить из дистриба архивную бд, и принудительно запустить перенос чеков, не ждать пока оно сработает по расписанию.
ПС а вы пользуетесь олапом?, если сервак чисто под сет, то оставьте работающим только сам сервер и агент сиквела, остальное выключить
06.03.2013 06:35
szlh0
 
Обычно проблема со службой CashServer, попробуйте отключить её. Посмотрите упадёт ли нагрузка на ЦП. Затем, если причина в нём, то идём в папку со службой и смотрим логи.
06.03.2013 15:54
Роллан
 
не было галочки в использовании AWE, прописал минимальную и максимальную память, все вроде нормализовалось.
теперь остается открытым вопрос с архивацией чеков, т.е. переноса с оперативных данных (SES) в архивную (SES archive), при выполнении скрипта MoveChequesToArchive в база SES, пишет ошибку
Msg 208, Level 16, State 1, Procedure MoveChequesToArchive, Line 101
Invalid object name 'Ses_Archive.dbo.OperDay'.
Msg 266, Level 16, State 2, Procedure MoveChequesToArchive, Line 101
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1.

как я понял, что не хватает таблиц 'Ses_Archive.dbo.OperDay', правильно?
вы писали что можно найти в дистрах новую базу Ses_Archive, в каких именно дистрах? если я его найду и подключу в sql, при выполнении вышенаписанного скрипта будет ли переноситься чеки?
06.03.2013 17:44
jurah
 
Disk_Retail_05.02.80.004\Installer\Install\SET\Data\Ses_Archive.bkp
11.03.2013 07:52
Роллан
 
Уважаемые гуру!
база SES Archive с дистриба восстановлена (сделал restore базы). Прошу написать скрипт, для переноса чеков с оперативных данных в архивную базу, например старше 30 дней, тот скрипт что писал ранее не работает.
и можно будет пояснить как правильно должно быть настроено в management studio и в Set Retail, чтобы чеки нормально хранились и переносились в архив, можно ли будет удалить с базы чеки с прошлого года например (и это не повредит ли), и моя база растер гигабайтами каждый день, это правильно?
в настройках Set-а есть где прописываешь путь к архивной базе, но нет кол-во дней после их истечения чтобы чеки переносились. есть пункт "путь для архивов БД" там нужно указывать путь к бэкапу базы SES Archive?
Спасибо за понимание!
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 336
Размер:	34.3 Кб
ID:	1820  
11.03.2013 08:27
Shift
 
Цитата:
в настройках Set-а есть где прописываешь путь к архивной базе, но нет кол-во дней после их истечения чтобы чеки переносились.
Количество операционных дней, оставляемых в операционной БД - указывает сколько дней оставить в операционной базе, а остальные автоматически переносятся в архивную базу при выполнении задания.
Цитата:
есть пункт "путь для архивов БД" там нужно указывать путь к бэкапу базы SES Archive?
Да.
Цитата:
можно ли будет удалить с базы чеки с прошлого года например (и это не повредит ли)
Да, можно. Нет, не повредит.
Код:
delete from chequehead where operday<'20130101'
delete from opergang where operday<'20130101'
Цитата:
и моя база растер гигабайтами каждый день, это правильно?
Не уверен что правильно. Что конкретно растет база или лог-файл? Если лог-файл, то что-то криво выполняется (или совсем не выполняется), ну и соответственно растет лог.
11.03.2013 12:25
vitamin
 
Посмотреть в свойствах базы сес модель восстановления. Должна стоять простая.
12.03.2013 07:31
Роллан
 
еще 1 вопрос:
как при создании бэкапа сжимать или архивировать через winrar, чтобы памяти меньше занимало? а то 1 бэкап базы SES = 16 Гб, SES Archive = 10 Гб.

Добавлено через 4 минуты 4 секунды
и есть скрипт для ручного переноса чеков в архив? с определенным периодом?
12.03.2013 08:18
Shift
 
Цитата:
и есть скрипт для ручного переноса чеков в архив? с определенным периодом?
Копируем хранимую процедуру MoveChequeToArchive, ищем там строки:
Код:
-- выбираем OperDay и ShopIndex
SET @DaysDelta = Cast(dbo.GetParm('OperDaysInOperDB') AS int)
SET @ShopIndex = Cast(dbo.GetParm('ShopIndex') AS int)
SET @SaveCheques = ISNULL(Cast(dbo.GetParm('MoveChequesToArchive') AS int),1)
SELECT @StartDay = MAX(OperDay) 
FROM OperDaysLastArchived
WHERE ShopIndex = @ShopIndex
@DaysDelta - количество дней хранимых в оперативной БД
@StartDay - последний заархивированный операционный день.

Соответственно если сегодня 12.03.2013, а заархивировать мы хотим с 01.03.2013 по 10.03.2013, тогда
@DaysDelta=2
@StartDa='20130301'
Как-то так.
12.03.2013 15:07
Роллан
 
а как в winrar сжимать?
12.03.2013 17:14
jurah
 
Сжимать то можно скриптом или пакетником. Только мне кажется, что 16 Гб для бэкапа базы сес - это ахтунг. я бы даже разбираться не стал. По новой сет проинсталил и загрузил из бэка..
14.03.2013 09:18
Роллан
 
Цитата:
Shift Копируем хранимую процедуру MoveChequeToArchive, ищем там строки:
Код:
-- выбираем OperDay и ShopIndex
SET @DaysDelta = Cast(dbo.GetParm('OperDaysInOperDB') AS int)
SET @ShopIndex = Cast(dbo.GetParm('ShopIndex') AS int)
SET @SaveCheques = ISNULL(Cast(dbo.GetParm('MoveChequesToArchive') AS int),1)
SELECT @StartDay = MAX(OperDay) 
FROM OperDaysLastArchived
WHERE ShopIndex = @ShopIndex
@DaysDelta - количество дней хранимых в оперативной БД
@StartDay - последний заархивированный операционный день.

Соответственно если сегодня 12.03.2013, а заархивировать мы хотим с 01.03.2013 по 10.03.2013, тогда
@DaysDelta=2
@StartDa='20130301'
Как-то так.
я не до конца понял, можно будет по подробнее, пожалуйста!
Копируем хранимую процедуру MoveChequeToArchive, ищем там строки: - где ищем?
Код:
-- выбираем OperDay и ShopIndex
SET @DaysDelta = Cast(dbo.GetParm('OperDaysInOperDB') AS int)
SET @ShopIndex = Cast(dbo.GetParm('ShopIndex') AS int)
SET @SaveCheques = ISNULL(Cast(dbo.GetParm('MoveChequesToArchive') AS int),1)
SELECT @StartDay = MAX(OperDay) 
FROM OperDaysLastArchived
WHERE ShopIndex = @ShopIndex
- куда вставлять?
14.03.2013 15:24
Shift
 
Цитата:
ищем там строки: - где ищем?
В теле процедуры.
Цитата:
Код:
-- выбираем OperDay и ShopIndex
SET @DaysDelta = Cast(dbo.GetParm('OperDaysInOperDB') AS int)
SET @ShopIndex = Cast(dbo.GetParm('ShopIndex') AS int)
SET @SaveCheques = ISNULL(Cast(dbo.GetParm('MoveChequesToArchive') AS int),1)
SELECT @StartDay = MAX(OperDay) 
FROM OperDaysLastArchived
WHERE ShopIndex = @ShopIndex
- куда вставлять?
Вставлять не куда не надо. Как раз этот кусок ищем и ставим то-что надо, например:
Код:
-- выбираем OperDay и ShopIndex
SET @DaysDelta = 2
SET @ShopIndex = Cast(dbo.GetParm('ShopIndex') AS int)
SET @SaveCheques = ISNULL(Cast(dbo.GetParm('MoveChequesToArchive') AS int),1)
SET @StartDay = '20130301'


Опции темы


Часовой пояс GMT +3, время: 19:54.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.