Переход с файлового варианта хранения базы 1С на клиент-серверную архитектуру с Microsoft SQL Server — ключевой шаг для компаний, столкнувшихся с замедлением работы при росте объема данных. SQL-сервер обеспечивает высокую производительность, надежность и возможности для масштабирования, но его настройка требует точного следования инструкциям. Ошибки на этапе подключения могут привести к потере доступа к базе или даже повреждению данных, поэтому важно понимать каждый шаг процесса.

В этой статье мы разберем не только стандартную процедуру подключения, но и нюансы, которые редко упоминают в официальной документации. Например, почему 1С:Предприятие 8.3 может не видеть свежеустановленный SQL Server 2022, как правильно настроить права доступа для пользователя базы данных, и что делать, если после миграции отчеты формируются дольше, чем в файловом режиме. Особое внимание уделим диагностике типичных ошибок — от "Не удалось установить соединение с сервером баз данных" до проблем с кодировкой.

1. Выбор версии SQL Server для 1С: совместимость и требования

Перед установкой сервера необходимо убедиться, что выбранная версия Microsoft SQL Server поддерживается вашей модификацией 1С:Предприятие. Совместимость зависит не только от года выпуска ПО, но и от разрядности операционной системы. Например, 1С 8.3.20+ официально сертифицирована для работы с SQL Server 2019 и 2022, но при использовании SQL Server 2016 могут возникать проблемы с новыми типами данных.

Официальные требования к версиям приведены в таблице ниже. Обратите внимание: даже если ваша версия 1С "поддерживает" определенный SQL Server, некоторые функции (например, JSON_MODIFY или STRING_AGG) могут работать некорректно в старых релизах платформы.

Версия 1С:Предприятие Поддерживаемые версии SQL Server Минимальная ОС для сервера Особенности
8.3.20–8.3.23 2012–2022 (включительно) Windows Server 2012 R2 / Linux (Ubuntu 18.04+) Полная поддержка UTF-8 в 2019+
8.3.16–8.3.19 2008 R2–2019 Windows Server 2008 R2 SP1 Ограничения на CLR-интеграцию
8.3.10–8.3.15 2005–2017 Windows Server 2008 SP2 Нет поддержки Always Encrypted
8.2 (любая) 2000–2014 Windows Server 2003 Требуется ручная настройка collation

Для большинства современных конфигураций (например, 1С:ERP или 1С:Управление холдингом) рекомендуется использовать SQL Server 2019 Standard или Enterprise. Эти версии оптимизированы для работы с большими объемами данных и поддерживают встроенную репликацию, что критично для распределенных систем. Если же вы работаете с типовыми конфигурациями (1С:Бухгалтерия или 1С:Зарплата и управление персоналом) и не планируете масштабирование, достаточно SQL Server 2017 Express — он бесплатен и покрывает потребности малых предприятий.

⚠️ Внимание: При использовании SQL Server Express учитывайте ограничение на размер базы данных (10 ГБ). Если ваша база приближается к этому лимиту, миграция на полноценную версию может потребовать остановки работы на несколько часов.
📊 Какую версию SQL Server вы планируете использовать для 1С?
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016 или старше
Ещё не решил

2. Подготовка сервера: установка SQL Server и необходимых компонентов

Установка Microsoft SQL Server для 1С имеет ряд особенностей, которые не всегда очевидны. Например, если вы устанавливаете сервер на Windows Server Core (без графического интерфейса), потребуется использовать консольные команды с ключами /QS (тихий режим) и /CONFIGURATIONFILE. Для большинства администраторов удобнее установить полную версию Windows Server с GUI, особенно если предстоит настраивать несколько экземпляров SQL.

Минимальный набор компонентов для работы с 1С:

  • 📦 Database Engine Services — ядро СУБД, обязательно для установки.
  • 🔧 SQL Server Replication — если планируете использовать распределенные базы.
  • 🛡️ Full-Text and Semantic Extractions for Search — для полнотекстового поиска в 1С.
  • 🔄 Management ToolsSQL Server Management Studio (SSMS) для администрирования.

Во время установки обратите внимание на:

  1. Collation — для 1С рекомендуется Cyrillic_General_CI_AS (для русскоязычных баз) или SQL_Latin1_General_CP1_CI_AS (для многобайтовых кодировок). Изменение collation после создания базы приведет к потере данных!
  2. Учетную запись службы — используйте доменную учетку или NT AUTHORITY\SYSTEM для локальных установок.
  3. Порты — по умолчанию SQL Server использует порт 1433, но его можно изменить в SQL Server Configuration Manager.

После установки обязательноapply последние обновления (CU — Cumulative Updates) для вашей версии SQL Server. Например, для SQL Server 2019 актуальным на момент написания статьи является CU24. Пропуск обновлений может привести к ошибкам совместимости с последними релизами 1С, особенно при работе с JSON-данными или временными таблицами.

☑️ Проверка установки SQL Server для 1С

Выполнено: 0 / 5

3. Настройка клиентского соединения: драйверы и параметры 1С

Для подключения 1С к SQL Server требуется клиентское ПО от MicrosoftODBC Driver for SQL Server или Native Client. В современных версиях 1С (8.3.20+) рекомендуется использовать ODBC Driver 17/18, так как он поддерживает новые протоколы шифрования (TLS 1.3) и оптимизирован для работы с Always Encrypted.

Скачать драйвер можно с официального сайта Microsoft:

Установите драйвер на все компьютеры, с которых будет осуществляться подключение к базе (сервер 1С, рабочие станции администраторов).

После установки драйвера необходимо настроить источник данных ODBC:

  1. Откройте Панель управления → Администрирование → Источники данных ODBC (64-разрядная).
  2. Перейдите на вкладку Системный DSN и нажмите Добавить.
  3. Выберите ODBC Driver 17/18 for SQL Server.
  4. Укажите:
    • Имя источника (например, 1C_SQL_Prod)
    • Имя сервера (например, SQL-SRV\INSTANCE)
    • Проверку подлинности (Windows или SQL Server)
    • Базу данных по умолчанию (можно оставить пустым)
  • На вкладке Дополнительно установите флаг Trust Server Certificate, если используете самоподписанный сертификат.
  • В конфигураторе 1С путь к настройке подключения: Администрирование → Публикация на веб-сервере → Настройки СУБД. Здесь необходимо указать:

    • 🔹 Тип СУБД: Microsoft SQL Server
    • 🔹 Имя сервера: в формате имя_сервера\имя_экземпляра (например, DB-SRV\SQL2019)
    • 🔹 Имя базы данных: будет создано автоматически при первой публикации
    • 🔹 Пользователь: учетная запись с правами db_owner
    💡

    Если при тестировании соединения 1С выдает ошибку "Не удалось загрузить библиотеку SQLNCLI", проверьте разрядность установленного драйвера. Для 64-битной 1С требуется 64-битный ODBC-драйвер, даже если ОС 32-битная.

    4. Создание базы данных и настройка пользователей

    Базу данных для 1С можно создать двумя способами: автоматически при первой публикации из конфигуратора или вручную через SQL Server Management Studio (SSMS). Второй вариант предпочтительнее, так как позволяет заранее настроить параметры роста файлов, резервного копирования и права доступа.

    Инструкция по ручному созданию базы:

    1. Откройте SSMS и подключитесь к серверу.
    2. Щелкните правой кнопкой по папке DatabasesNew Database.
    3. Укажите:
      • Имя базы (например, 1C_ERP_Prod)
      • Размер первичного файла данных (1024 MB для тестов, 10 GB+ для рабочих баз)
      • Автоувеличение (By 1024 MB, Unlimited)
      • Файл журнала транзакций (512 MB с автоувеличением 256 MB)
  • На вкладке Options установите:
    • Collation: Cyrillic_General_CI_AS
    • Compatibility level: соответствует версии вашего SQL Server
    • Recovery model: FULL (для возможности point-in-time recovery)

    Для пользователя 1С создайте отдельный login в разделе Security → Logins:

    • 👤 Укажите имя (например, 1C_Service)
    • 🔑 Выберите аутентификацию (Windows или SQL Server)
    • 📌 На вкладке User Mapping назначьте базу данных и роль db_owner
    • 🛡️ На вкладке Securables добавьте разрешения:
      • ALTER ANY SCHEMA
      • EXECUTE на sp_procedure_params_1c (если используется)
    ⚠️ Внимание: Никогда не используйте учетную запись sa для подключения 1С. Это создает критическую уязвимость безопасности, так как пароль sa часто становится целью атак. Вместо этого создайте отдельного пользователя с минимально необходимыми правами.
    Что будет если не настроить автоувеличение файлов базы?

    Если не указать параметры автоувеличения, при достижении лимита размера база 1С перестанет работать с ошибкой "Недостаточно места на диске для файла '...'. Увеличьте размер файла или освободите место.". Восстановление работоспособности потребует ручного вмешательства администратора и может занять до нескольких часов для крупных баз.

    5. Публикация базы 1С на SQL Server

    Когда сервер и база данных готовы, остается перенести саму информационную базу 1С. Этот процесс называется публикацией и может выполняться как из конфигуратора, так и через утилиту chdbfl.exe (для опытных администраторов). Рассмотрим оба варианта.

    Способ 1: Публикация через конфигуратор

    1. Откройте конфигуратор 1С в режиме Администратор.
    2. Выберите Администрирование → Публикация на веб-сервере.
    3. Укажите:
      • 📌 Каталог публикации (например, C:\inetpub\wwwroot\1c_erp)
      • 🔗 Имя виртуального каталога (будет частью URL, например erp)
      • 🗃️ Каталог базы данных (путь к файловой базе, если мигрируете)
  • На вкладке Настройки СУБД выберите Microsoft SQL Server и укажите параметры подключения.
  • Нажмите Опубликовать и дождитесь завершения процесса.
  • Способ 2: Конвертация через chdbfl.exe (для больших баз)

    Если размер файловой базы превышает 20 ГБ, публикация через конфигуратор может занять несколько часов или завершиться с ошибкой таймаута. В этом случае используйте утилиту chdbfl.exe, которая входит в комплект поставки 1С:

    chdbfl.exe CreateSQLDB /S "SQL-SRV\INSTANCE"
    

    /D "1C_ERP_Prod"

    /U "1C_Service"

    /P "ВашПароль"

    /L "C:\1C_Bases\erp"

    /N "ИмяПубликации"

    Ключи команды:

    • /S — имя SQL-сервера
    • /D — имя базы данных
    • /U и /P — логин и пароль
    • /L — путь к файловой базе
    • /N — имя публикации (опционально)

    Процесс конвертации может занять от 30 минут до нескольких часов в зависимости от размера базы и производительности дисковой подсистемы. Не прерывайте процесс — это приведет к повреждению как исходной файловой базы, так и новой SQL-базы. Если конвертация зависла, проверьте журнал событий Windows на наличие ошибок диска или памяти.

    💡

    Перед миграцией крупной базы (>50 ГБ) выполните дефрагментацию файловой базы 1С с помощью утилиты chdbfl.exe /C. Это сократит время конвертации на 20–40%.

    6. Тестирование соединения и диагностика ошибок

    После публикации базы необходимо проверить ее работоспособность. Начните с тестирования соединения из конфигуратора:

    1. Откройте конфигуратор и выберите Файл → Открыть.
    2. В списке баз должна появиться ваша SQL-база с пометкой [SQL].
    3. Подключитесь к базе и выполните тестовые операции:
      • Откройте любой справочник (например, Номенклатура)
      • Сформируйте простой отчет (например, Обороты по счетам)
      • Создайте тестовый документ

    Типичные ошибки и их решения:

    Ошибка Вероятная причина Решение
    Не удалось установить соединение с сервером баз данных Неверное имя сервера или порт заблокирован Проверьте ping до сервера и настройки брандмауэра
    Ошибка при выполнении операции с базой данных: [Microsoft][ODBC Driver 17 for SQL Server]Login failed Неправильный логин/пароль или недостаточные права Проверьте учетные данные в SSMS и права пользователя
    Неверная версия сервера баз данных Несовместимость версий 1С и SQL Server Обновите 1С или используйте поддерживаемую версию SQL
    Timeout expired Долгое выполнение запроса или сетевые задержки Увеличьте Connection Timeout в настройках ODBC

    Для диагностики проблем используйте:

    • 🔍 Журналы SQL Server: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG
    • 📡 Тест соединения через ODBC: Панель управления → Источники данных ODBC → Тест источника данных
    • 🛠️ Утилиту 1cv8 с ключом /Debug для детального лога:
    1cv8.exe DESIGNER /S "sql-srv\instance" /N "BaseName" /U "User" /P "Password" /Debug

    Если база работает медленнее, чем в файловом режиме, проверьте:

    • 📈 Настройки Memory Allocation в SQL Server (минимальный и максимальный объем ОЗУ)
    • 💾 Конфигурацию дисковой подсистемы (SSD рекомендуется для файлов .mdf и .ldf)
    • 🔄 План обслуживания базы (регулярная переиндексация и обновление статистики)
    SELECT
    

    DB_NAME(database_id) AS DatabaseName,

    COUNT(*) AS ActiveSessions,

    SUM(cpu_time) AS TotalCPU,

    SUM(logical_reads) AS TotalReads

    FROM sys.dm_exec_requests

    CROSS APPLY sys.dm_exec_sql_text(sql_handle)

    WHERE DB_NAME(database_id) = '1C_ERP_Prod'

    GROUP BY database_id;

    Этот запрос покажет текущую нагрузку на базу и поможет выявить "тяжелые" сессии.-->

    7. Оптимизация производительности SQL-базы 1С

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

    1. Настройка памяти

    SQL Server по умолчанию может использовать всю доступную память сервера, что приводит к деградации производительности других служб. Ограничьте максимальный объем ОЗУ:

    EXEC sys.sp_configure 'show advanced options', 1;
    

    RECONFIGURE;

    EXEC sys.sp_configure 'max server memory (MB)', 16384; -- 16 GB для сервера с 32 GB ОЗУ

    RECONFIGURE;

    2. Оптимизация tempdb

    База tempdb активно используется 1С для временных таблиц. Рекомендуется:

    • Разместить файлы tempdb на отдельном быстром диске (SSD NVMe)
    • Создать несколько файлов данных (по количеству ядер процессора, но не более 8)
    • Установить начальный размер файлов tempdb в 1–2 ГБ с автоувеличением по 512 МБ

    3. Индексы и статистика

    1С создает индексы автоматически, но они не всегда оптимальны. Для улучшения производительности:

    • Еженедельно обновляйте статистику:
    EXEC sp_updatestats;
    • Ежемесячно выполняйте реорганизацию индексов:
    ALTER INDEX ALL ON [1C_ERP_Prod].[dbo].[_Document123] REORGANIZE;

    4. Настройка протокола сети

    По умолчанию 1С использует TCP/IP, но для локальных сетей можноforced Shared Memory (более быстрый протокол):

    1. Откройте SQL Server Configuration Manager.
    2. Перейдите в SQL Server Network Configuration → Protocols for [INSTANCE].
    3. Отключите TCP/IP и включите Shared Memory (только для локального подключения!).
    ⚠️ Внимание: Изменение протокола на Shared Memory сделает базу недоступной для удаленных подключений. Используйте этот метод только если все клиенты 1С работают на том же сервере, что и SQL Server.

    8. Резервное копирование и обслуживание SQL-базы 1С

    Организация резервного копирования для SQL-базы 1С имеет критические отличия от файлового варианта. В SQL Server рекомендуется использовать полный режим восстановления (FULL recovery model), который позволяет восстанавливать базу на любой момент времени (point-in-time recovery). Это особенно важно для бухгалтерских баз, где требуется восстановление данных на конкретную дату.

    Стратегия резервного копирования:

    • 📅 Ежедневное полное копирование (ночью, когда нагрузка минимальна)
    • Часовой дифференциальный бэкап (для баз >50 ГБ)
    • 🔄 Копирование журнала транзакций каждые 15 минут (для критических систем)

    Пример скрипта для полного бэкапа:

    BACKUP DATABASE [1C_ERP_Prod]
    

    TO DISK = 'D:\Backups\1C_ERP_Prod_Full.bak'

    WITH COMPRESSION, STATS = 10, INIT;

    Для автоматизации резервного копирования используйте SQL Server Agent или сторонние решения вроде SQLBackupAndFTP. Важно хранить бэкапы на отдельном физическом носителе (например, на NAS или в облаке) и регулярно тестировать их восстановление.

    План обслуживания базы:

    Создайте еженедельное задание в SQL Server Agent для:

    • 🧹 Очистки истории и планов выполнения:
    EXEC sp_delete_backuphistory 7; -- Удаляет записи старше 7 дней
    

    DBCC FREEPROCCACHE;

    DBCC FREESYSTEMCACHE('ALL');

    • 🔍 Проверки целостности базы:
    DBCC CHECKDB ([1C_ERP_Prod]) WITH NO_INFOMSGS, ALL_ERRORMSGS;

    Для мониторинга состояния базы настройте оповещения о критических событиях (например, ошибки диска или нехватка места) через SQL Server Alerts или системы вроде Zabbix.

    💡

    Регулярное тестирование восстановления бэкапов — единственный способ гарантировать их работоспособность. По статистике, 30% компаний обнаруживают, что их резервные копии повреждены, только когда пытаются восстановить данные после сбоя.

    FAQ: Частые вопросы по подключению 1С к SQL Server

    Можно ли подключить 1С к SQL Server Express?

    Да, но с ограничениями: максимальный размер базы — 10 ГБ, нет SQL Agent для автоматизации задач. Для тестовых или небольших баз (до 5 пользователей) этого достаточно, но для рабочих систем рекомендуется Standard или Enterprise редакция.

    Как перенести базу с файлового варианта на SQL без потери данных?

    Используйте утилиту chdbfl.exe с ключом CreateSQLDB, как описано в разделе 5. Важно: перед миграцией выполните Тестирование и исправление файловой базы в конфигураторе и создайте резервную копию. Процесс миграции необратим — после успешного переноса файловая база станет неактуальной.

    Почему после подключения к SQL отчеты в 1С формируются дольше?

    Частая причина — отсутствие актуальной статистики или неоптимальные индексы. Выполните:

    EXEC sp_updatestats;
    

    ALTER INDEX ALL ON [1C_ERP_Prod].[dbo].[_AccumRgT999] REBUILD;

    Также проверьте настройки памяти SQL Server — если серверу не хватает ОЗУ, он активно использует диск, что замедляет работу.

    Как подключить 1С к SQL Server на Linux?

    1С официально поддерживает SQL Server на Linux начиная с версии платформы 8.3.20. Основные отличия от Windows-версии:

    • Используйте ODBC Driver 17/18 for SQL Server для Linux
    • Настройте collation при создании базы: Cyrillic_General_CI_AS
    • Порты и брандмауэр