Какую связку Windows Server и MS SQL Server выбрать для базы 1С 7.7 от 30 ГБ и как ее настроить?

Системный администратор 1С v7.7 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

Перенос крупной информационной базы 1С:Предприятие 7.7 объемом 30 ГБ и более со связки Windows Server 2003 и MS SQL Server 2000 на современное серверное оборудование требует взвешенного подхода к выбору операционной системы и СУБД. В таких условиях часто возникает дилемма: остаться на проверенных, но устаревших версиях вроде Windows Server 2003 R2 64-bit и SQL Server 2005, либо развернуть инфраструктуру на базе Windows Server 2008 R2 64-bit и SQL Server 2008 (или SQL Server 2008 R2). Разберем ключевые различия этих связок, выясним влияние штатного движка 1С на производительность СУБД и рассмотрим обязательные параметры тонкой настройки сервера.

Сравнение платформ: SQL Server 2005 против SQL Server 2008 на 64-битных ОС

Штатный движок платформы 1С 7.7 формирует запросы к СУБД по устаревшим алгоритмам, которые изначально разрабатывались под MS SQL Server 6.5 и 7.0. По этой причине смена версии базы данных практически не ускоряет стандартные выборки и проведение документов в немодифицированной конфигурации. Однако с точки зрения стабильности, администрирования и надежности СУБД разница между версиями существенна.

  1. Стабильность оптимизатора запросов: В MS SQL Server 2005 нередко встречаются ситуации с внезапной генерацией неэффективных планов выполнения на больших таблицах (вместо поиска по индексу запускается полное сканирование таблицы Table Scan). Это провоцирует каскадные блокировки строк и зависание пользователей. В SQL Server 2008 работа оптимизатора стала значительно более предсказуемой.
  2. Встроенное сжатие резервных копий: Для базы объемом от 30 ГБ создание бэкапов штатными средствами SQL Server 2005 создает высокую нагрузку на дисковую подсистему и требует огромного пространства для хранения. В версии SQL Server 2008 появилась поддержка компрессии бэкапов «на лету», что ускоряет регламентное обслуживание в несколько раз и экономит дисковое пространство.
  3. Поддержка инфраструктуры: Windows Server 2008 R2 обеспечивает полноценную работу современных служб (включая актуальные версии веб-сервера IIS для взаимодействия с внешними системами или 1С:CRM), лучшую изоляцию процессов и стабильную работу с большим объемом оперативной памяти.

Таким образом, выбор связки Windows Server 2008 R2 64-bit + MS SQL Server 2008 / 2008 R2 является наиболее оправданным решением.

Архитектурные риски сетевого режима без терминального доступа

Проанализируем специфику работы с базой без терминального сервера (RDP), когда клиентские приложения запускаются по локальной сети напрямую с рабочих станций. В случае с базой 30 ГБ такой сценарий несет высокие эксплуатационные риски:

  1. Двухзвенная модель («толстый клиент»): Вся бизнес-логика выполняется на рабочих станциях пользователей. При проведении крупных документов или построении отчетов клиентская машина передает и принимает огромные массивы необработанных данных через сетевой стек. Любые микроразрывы связи или задержки сетевого оборудования вызывают падение транзакций и аварийное закрытие программы.
  2. Особенности протокола SMB 2.0 / 2.1: При обращении клиентских станций 1С 7.7 к сетевой папке на сервере Windows Server 2008 R2 (где находятся файлы конфигурации 1Cv7.MD, список пользователей users.usr и маркеры *.LCK) активные механизмы кэширования директорий и лизинга SMB могут вызывать зависание дескрипторов файлов. В результате пользователи получают критическую ошибку «Ошибка блокировки метаданных». Для стабильной работы на стороне сервера необходимо принудительно отключить лизинг и кэширование каталогов SMB 2.0 либо задействовать совместный доступ по протоколу SMB 1.0.

Обязательные параметры тонкой настройки MS SQL Server для 1С 7.7

Для того чтобы СУБД SQL Server 2008 корректно и быстро обрабатывала транзакции устаревшего движка «семерки», необходимо выполнить специальную адаптацию системных параметров инстанса:

  1. Ограничение параллелизма (Max Degree of Parallelism): По умолчанию SQL Server распределяет ресурсоемкие запросы по всем доступным вычислительным ядрам процессора. Для архитектуры 1С 7.7 такое поведение крайне неэффективно и вызывает массивные задержки потоков с ожиданием типа CXPACKET. Обязательно переведем сервер в однопоточный режим обработки каждого запроса, установив параметр:
    
    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'max degree of parallelism', 1;
    RECONFIGURE;
    GO
    
  2. Оптимизация базы TempDB: Движок платформы постоянно формирует промежуточные таблицы во временной базе данных. Для устранения конкуренции за системные страницы распределения памяти (PFS/GAM/SGAM) разделим файл данных tempdb на несколько одинаковых файлов (от 4 до 8 файлов с равным шагом авторасширения) и активируем флаги трассировки -T1118 (выделение сразу полных экстентов по 64 КБ) и -T1117 (пропорциональное увеличение всех файлов группы).
  3. Динамический пересчет статистики (-T2371): По умолчанию статистика устаревает только при изменении 20% + 500 строк таблицы. Для 30-гигабайтной базы с миллионами записей в регистрах этот порог приводит к тому, что СУБД неделями строит неверные планы запросов. На SQL Server 2008 R2 SP1 и выше подключим флаг трассировки -T2371, который автоматически снижает порог устаревания по мере роста объема таблицы.
  4. Активация исправлений оптимизатора (-T4199): Флаг трассировки -T4199 включает кумулятивный пакет исправлений логики работы оптимизатора запросов, устраняя проблемы с некорректным выбором планов во многих типовых выборках.
  5. Контроль блокировок (-T1211 / -T1224): Чтобы предотвратить нежелательную эскалацию блокировок строк и страниц до блокировки всей таблицы целиком, задействуем флаги -T1211 или -T1224 в параметрах запуска экземпляра SQL Server.

Настройка сетевого стека, ODBC и параметров сортировки

Рассмотрим правила взаимодействия клиентских машин с экземпляром базы данных:

  1. Параметры сортировки (Collation): При установке инстанса SQL Server критически важно выбрать сортировку Cyrillic_General_CI_AS. Несовпадение серверного порядка сортировки с кодовой страницей информационной базы сделает подключение невозможным на этапе входа в систему.
  2. Режим аутентификации: Установим режим смешанной проверки подлинности (SQL Server and Windows Authentication mode), так как 1С 7.7 требует авторизации под системной учетной записью СУБД.
  3. Конфигурация клиента (cliconfg): Платформа 7.7 работает через системный драйвер ODBC (sqlsrv32.dll). На всех клиентских компьютерах через 32-битную утилиту C:\Windows\SysWOW64\cliconfg.exe жестко зафиксируем использование протокола TCP/IP (отключив Named Pipes), а также создадим явный алиас сервера с указанием статического порта SQL Server. Это позволит полностью исключить паразитные задержки и нестабильность службы SQL Server Browser.

Соблюдение приведенных правил развертывания позволит комфортно эксплуатировать базу 1С 7.7 любого объема на современном серверном оборудовании под управлением Windows Server 2008 R2 и MS SQL Server 2008, сохраняя высокую скорость транзакций и целостность данных.

← На главную