Настройка MS SQL сервер для правильной работы с 1С

1C_ARENDA%20PROGRAMM_logo_v2_red.png

Цель нашей компании - предложение качественных локализованных ERP-решений и проектных услуг по внедрению управленческого, бухгалтерского и налогового учета

Для того чтобы правильно настроить MS SQL сервер для работы с 1С, пришлось проштудировать не один десяток сайтов, обратиться за помощью к продвинутым пользователям, провести эксперимент на нескольких тысячах желающих. Итогом такой кропотливой работы можно только гордиться: работать с 1С посредством сервера MS SQL – одно удовольствие. Делимся с вами рецептом настройки MS SQL сервера.

Настроим сервер

Залог успешного функционирования 1С – работа исключительно с сервером. Поэтому в первую очередь следует отключить все второстепенные службы, которые только снижают скорость работы. Например, абсолютно бесполезной является FullText Search, так как 1С обладает собственным механизмом поиска. Полезными будут лишь такие функции, как SQL Server (sqlservr.exe), SQL Server Agent (SQLAGENT.exe), SQL Writer (sqlwriter.exe).

В свойствах сервера посредством Server Management Studio следует установить:

Посчитаем, сколько памяти можно отвести серверу. От суммарного количества оперативной памяти отнимем 4 Гб (или 2 Гб под Win2003) под систему, на каждый активный процесс rphost отведем 1.5 Гб, при условии, что SQL и 1С вращаются на одном сервере. То есть, если оперативная память сервера 36 Гб, ОС Windows 2008, запущено 5 процессов rphost, то ограничения для SQL будет составлять 24,5 Гб.

Для чего нужно ограничение? Для того чтобы sql сервер заранее освобождал нужное количество памяти. Если заблаговременно не ограничить объем, сервер будет пытаться отыскать бОльшее количество памяти, чем может предоставить сервер, что отразится на скорости его работы.

Максимальное число потоков не должно превышать 2048, в идеале оно должно быть равно 2048, так как при меньшем количестве потоков сервер работает медленнее, что было доказано опытным путем. Приоритет сервиса ставим высокий (Boost priority).

Основные настройки можно считать законченными. Переходим к следующему этапу.

Настроим базы данных

В первую очередь открываем свойства требуемой нам базы данных:

Если пока известен лишь примерный размер базы данных, а сама БД находится в .dt файле, то рационально указать размер первичного файла большим или равным по размеру базы, так как после «распечатывания» файла с БД он увеличится. Автоувеличение размера следует указывать с расчетом 200 Мб на каждую из БД и 50 Мб для лога, в противном случае сервер будет работать медленно, так как увеличение файла нужно будет осуществлять после каждой третьей транзакции. При неиспользовании RAID-массива места хранения файлов базы данных и лога следует указывать на разных физических дисках. И кстати, рекомендуем установить ограничения на логи, от 2 до 4 Гб будет вполне достаточно.

Подробные настройки отображены на скриншоте

На этом можно закончить настройки базы данных.

Настраиваем регламентные задания

В разделе Management следует создать Maintenance Plan:

Не стоит забывать о ежедневной дефрагментации индексов и сборе статистики, потому как низкий уровень фрагментированности может оказать негативное влияние на производительность сервера. Дефрагментация и сбор статистики – операции несложные, они не займут много времени и при их проведении пользователи могут продолжать свою работу. Один раз в неделю перед дефрагментацией и обновлением статистики рекомендуем блокировать базы данных и проводить полную индексацию.

Как настроить бэкап посредством SQL

Для этого нужно добавить Agent'у два новых задания: Full BackUp, периодичность один раз в сутки, два шага T-SQL скриптов:

1. BACKUP DATABASE [<ИмяБД>] TO DISK = N'<ПутьКПапке>\Backup\<ИмяБД>.bak' WITH NOFORMAT, INIT, NAME = N'<ИмяБД>-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

GO

2. USE [<ИмяБД>]

GO

DBCC SHRINKFILE (N'<ИмяБД>_log' , 0)

GO

Периодичность второго задания – один раз в один-два часа Differencial BackUp, один T-SQL скрипт:

BACKUP DATABASE [<ИмяБД>] TO DISK = N'<ПутьКПапке>\Backup\<ИмяБД>Diff.bak' WITH DIFFERENTIAL , NOFORMAT, INIT, NAME = N'<ИмяБД>-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

GO

Этот бэкап занимает 4-6 минут, даже если пользователи активно работают, причем на быстродействии сервера это никак не сказывается.

Кроме очистки процедурного после еженедельной переиндексации, в задание, появившееся в агенте после сохранения Maintenance Plan, добавим еще одну задачку:

DBCC FREEPROCCACHE

GO

И последнее: не забудьте изменить в настройках первого шага функцию «выходить после завершения» на «перейти к следующему».

Вернуться к списку