SQL Server установлен, база 1С создана, пользователи работают. Через несколько недель LDF забирает всё свободное место: база унаследовала модель восстановления Full от model, а копирование журнала никто не настроил.

Исправлять такую схему придётся под нагрузкой. До установки лучше решить, где будут работать 1С и SQL Server, сколько памяти получит СУБД, куда лягут её файлы и как пойдут резервные копии. После запуска проверьте рабочую операцию и восстановление базы — зелёного статуса службы для приёмки мало.

Здесь речь о проектировании нового сервера. Параметры действующего экземпляра собраны в порядке доводки SQL Server под нагрузку 1С.

Решите, останутся ли 1С и SQL Server на одной машине

Небольшую базу можно запустить на виртуальной машине вместе с сервером 1С. Такую схему приводит практическое руководство IP-Way по настройке SQL Server для 1С.

Старт получается проще, но обе системы делят одни ресурсы. SQL Server держит данные в буферном кэше. Рабочие процессы 1С тратят память на сеансы и серверные вызовы. Если RAM не хватает обеим ролям, один лишь предел памяти SQL Server проблему не закроет.

ПризнакОдна виртуальная машинаОтдельный сервер СУБД
Памяти хватает с небольшим запасомРоли можно оставить вместеУсложнять схему разделением пока нет смысла
SQL Server и процессы 1С регулярно конкурируют за RAMПамять придётся делить жёсткими пределамиКаждая роль получает свой объём RAM
Процессор одновременно занят запросами и рабочими процессами 1СОдна роль отнимает процессорное время у другойCPU для СУБД можно подбирать и расширять отдельно
Диски обслуживают базу, журнал и временные операцииОбе роли зависят от одной очереди ввода-выводаСУБД не делит хранилище с сервером приложений
База быстро растётС каждым месяцем перенос усложняетсяСУБД можно масштабировать отдельно
Окно обслуживания сокращаетсяРаботы затрагивают обе ролиСУБД можно обслуживать независимо

Совмещённая машина годится для старта. Проектировать её как постоянную схему под любую будущую нагрузку не стоит.

IP-Way советует разделять роли, если системе регулярно не хватает памяти, а 1С и SQL Server спорят за CPU или диски. Быстрый рост базы и короткое окно обслуживания — ещё два сигнала. Если они заметны до запуска, разнесите роли сразу.

При схеме из двух машин заранее проверьте сетевой маршрут между сервером приложений и СУБД. Права, службы и рабочие процессы описаны в руководстве по компонентам кластера 1С.

Разложите файлы до установки SQL Server

SQL Server создаёт четыре разных потока ввода-вывода: данные, журнал транзакций, tempdb и резервные копии. IP-Way советует разнести их по разным томам или массивам.

Одних букв дисков недостаточно. Если четыре тома собраны на одном массиве, запросы всё равно идут к тем же накопителям через тот же контроллер. Смотрите физическую схему, а не список каталогов в установщике.

Назначение хранилищаЧто размещатьЧто произойдёт при конкуренции или отказе
ДанныеФайлы MDF и NDF рабочих базЗапросы ждут чтения страниц и записи изменений
ЖурналФайлы LDFТранзакции ждут последовательной записи в журнал
Временная базаФайлы данных и журнал tempdbВременные таблицы, сортировки и версии строк делят одну очередь
Резервные копииПолные, разностные копии и копии журналаКопирование нагружает рабочее хранилище
Внешнее хранилищеКопии, которые переживут отказ сервераОтказ массива не уничтожит рабочую базу вместе с её копиями

Рабочие файлы и резервные копии не должны погибнуть при одном отказе. Это главная граница в раскладке хранилищ.

Каталог на том же сервере можно использовать как промежуточную точку. Итоговые копии IP-Way рекомендует переносить за пределы рабочего сервера.

Каталоги SQL Server исключите из антивирусной проверки в реальном времени. По предупреждению IP-Way, такая проверка задерживает обращения к файлам базы. Добавляйте в исключения конкретные каталоги SQL Server, а не весь диск.

Задайте пути до создания рабочей базы. Перенос MDF, LDF и tempdb после запуска потребует дополнительных операций и окна обслуживания.

Установите только нужные компоненты и разделите учётные записи

Сначала обновите Windows, затем устанавливайте SQL Server. Именно такой порядок указан в руководстве IP-Way.

Для базы 1С нужен компонент Database Engine Services. Службы SQL Server запускайте под отдельными учётными записями и оставьте им лишь необходимые права. Эту схему рекомендуют IP-Way и руководство ITAT по SQL Server для 1С.

Платформе 1С не нужна служебная учётная запись SQL Server. Создайте отдельный логин, привяжите его к рабочей базе и выдайте права только внутри неё. Руководство ITAT указывает для такого пользователя роль db_owner.

Не подключайте 1С через sa. ITAT советует назначить этому логину сложный пароль, а после создания отдельных учётных записей отключить его.

Подготовка операционной системы и выбор компонентов разобраны в схеме развёртывания Windows Server, SQL Server и платформы.

Ограничьте память SQL Server до запуска пользователей

Если предел не задан, SQL Server может забрать большую часть доступной RAM. Параметр max server memory ограничивает память, которую Database Engine тратит на внутренние задачи. Такое описание приводит IP-Way.

Возьмём выделенный сервер с 64 ГБ RAM. По допущению из руководства Fast1C оставим операционной системе 8 ГБ:

64 ГБ − 8 ГБ = 56 ГБ

Значение для SQL Server задаётся в мегабайтах:

56 × 1024 = 57 344 МБ

Для этого примера стартовый max server memory равен 57 344 МБ. Число относится к выделенному SQL Server и не подходит любой машине без пересчёта.

На совмещённом сервере память делят Windows, SQL Server и рабочие процессы 1С. ITAT предлагает оставлять вне SQL Server 30–40% RAM, если обе роли работают на одной машине.

Допустим, серверу выделили 64 ГБ RAM. При резерве 40% расчёт будет таким:

64 × 0,60 = 38,4 ГБ

Для стартовой настройки округлим результат вниз до 38 ГБ:

38 × 1024 = 38 912 МБ

Это верхняя отправная точка для SQL Server. После запуска посмотрите, сколько памяти забирают Windows и процессы 1С. Если оставшегося объёма им не хватает, уменьшите предел SQL Server либо разделите роли.

Выберите модель восстановления до первой рабочей операции

Каждая новая база наследует модель восстановления от системной базы model. В разборе конфигурации SQL Server на Хабре указано, что model по умолчанию работает в Full. Значит, модель новой базы нужно проверять явно.

В Simple SQL Server освобождает использованное место журнала после контрольной точки. В Full транзакции остаются в журнале, пока тот не попадёт в резервную копию. Эти различия описаны в том же разборе на Хабре.

Full нужна, если базу требуется возвращать к выбранному моменту. Копирование журнала в таком случае настройте до запуска пользователей. Иначе LDF продолжит расти и может заполнить том. Об этом предупреждают Хабр, IP-Way и руководство ITAT.

Simple убирает обязанность копировать журнал, но не отменяет резервные копии базы. Модель выбирают по допустимой потере данных, а не по объёму свободного места.

Требование лучше записать до установки:

В режиме Full мало один раз создать задание SQL Server Agent. Проверяйте его выполнение, срок хранения копий и целостность всей последовательности.

Настройте фиксированный рост файлов

Процентный прирост зависит от текущего размера файла. База растёт — вместе с ней увеличивается каждый следующий шаг расширения. IP-Way и Fast1C советуют задавать прирост в мегабайтах.

Для файлов данных Fast1C приводит стартовый прирост 1024 МБ. Для журнала — 512 МБ. Это исходные настройки: позднее их нужно сверить с темпом роста вашей базы.

Не сжимайте рабочие файлы по расписанию. После сжатия нагрузка снова расширит файл. Fast1C связывает AUTO_SHRINK с фрагментацией индексов и рекомендует отключать этот параметр.

ПараметрСтартовое значение для примераКогда пересматривать
max server memory57 344 МБ при 64 ГБ RAM на выделенном SQL ServerПосле изменения RAM или переноса ролей
Файлы данных tempdbПо одному на логическое ядро, но не больше восьмиПри конкуренции за страницы распределения
Размер файла данных tempdb1024 МБЕсли файлы растут при обычной дневной нагрузке
Прирост файла tempdb512 МБ фиксированноЕсли расширения происходят слишком часто
Прирост MDF/NDF1024 МБ фиксированноПри изменении темпа роста рабочей базы
Прирост LDF512 МБ фиксированноПосле анализа частоты расширений и копий журнала
Модель восстановленияSimple либо Full по требуемой точке возвратаПри изменении требований к потере данных

Это стартовые значения. Наблюдение за памятью, файлами и заданиями копирования они не заменяют.

Подготовьте tempdb под число логических ядер

Fast1C предлагает начинать с одного файла данных tempdb на логическое ядро, но ограничить число файлов восемью. Размер и прирост у всех файлов должны совпадать.

Для сервера с восемью логическими ядрами расчёт выглядит так:

min(8 ядер, 8) = 8 файлов

Если каждому файлу выделить по 1 ГБ, суммарный начальный объём составит:

8 × 1 ГБ = 8 ГБ

Для каждого файла задайте фиксированный прирост 512 МБ. Эти исходные значения приводит руководство Fast1C.

На четырёх логических ядрах начните с четырёх одинаковых файлов. Если ядер больше восьми — с восьми. Добавлять файлы после каждого расширения процессора не нужно.

Начального размера должно хватать для обычной нагрузки без постоянного автоматического роста. IP-Way советует подбирать его по рабочей нагрузке. После запуска проверьте историю расширений файлов.

Разместите tempdb отдельно от рабочей базы и её журнала. Разница проявится при операциях с временными объектами и версиями строк.

Проверьте базу через рабочий сценарий

Запущенная служба подтверждает лишь то, что процесс SQL Server работает. Она не проверяет права пользователя 1С, сетевое подключение и пригодность резервной копии.

Создайте клиент-серверную базу и подключите её через отдельный логин. ITAT рекомендует использовать TCP и статический порт SQL Server. Точный порядок регистрации базы и проверки сеанса вынесен в отдельную инструкцию.

После первого входа повторите типовую операцию вашей конфигурации. Откройте форму, запишите тестовый объект, сформируйте короткий отчёт. Затем в согласованное окно перезапустите службы и выполните тот же сценарий ещё раз.

Для сравнения нужна одна и та же операция. IP-Way рекомендует проверять изменения SQL Server на одинаковой рабочей нагрузке. Иначе в замер попадут разные запросы, а результат ничего не покажет.

Завершите проверку резервным копированием и восстановлением в отдельную базу. IP-Way советует регулярно проверять копии тестовым восстановлением. Сам по себе файл .bak ещё не доказывает, что база из него вернётся.

Разверните копию под другим именем и задайте отдельные пути к MDF и LDF. Откройте восстановленную базу, выполните проверочный запрос и запишите длительность процедуры.

Расписание, контроль заданий и проверка последовательности копий описаны в регламенте резервного копирования базы на SQL Server.

Стартовая схема для небольшой компании

Исходные данные примера: выделенный SQL Server, 64 ГБ RAM и восемь логических ядер. Операционной системе оставляем 8 ГБ. В max server memory записываем 57 344 МБ.

Для tempdb создаём восемь одинаковых файлов данных по 1 ГБ. Каждый растёт фиксированными блоками по 512 МБ. Прирост MDF/NDF задаём по 1024 МБ, LDF — по 512 МБ.

Данные, журнал, tempdb и резервные копии разводим по хранилищам. Итоговые копии отправляем за пределы рабочего сервера.

Модель восстановления выбираем по допустимой потере данных. Для Full сразу запускаем копирование журнала. Для Simple настраиваем полные копии и всё равно проверяем восстановление.

Перед передачей сервера пользователям проверьте пять пунктов:

  1. max server memory оставляет достаточно памяти Windows и другим процессам.
  2. MDF, LDF, tempdb и копии лежат по утверждённой схеме.
  3. Модель восстановления совпадает с расписанием копирования.
  4. База открывается через отдельный логин, а не через sa.
  5. Свежая копия восстанавливается в отдельную проверочную базу.

Если SQL Server уже спорит с процессами 1С за ресурсы, чужой набор параметров не спасёт. Разделите роли или закажите расчёт серверной схемы по нагрузке вашей базы.

sql-server tempdb клиент-серверная база резервное копирование сервер 1с