Работа системного администратора или специалиста технической поддержки в среде 1С:Предприятие часто сопряжена с необходимостью переноса информационных баз, тестирования обновлений или восстановления данных после сбоев. Одной из самых надежных и распространенных стратегий резервного копирования является создание слепков базы данных средствами СУБД Microsoft SQL Server. В отличие от файловых выгрузок, такой подход позволяет получить точную копию состояния системы на конкретный момент времени, включая все транзакции и служебные таблицы.
Процедура развертывания (или восстановления) базы из .bak файла требует внимательности к деталям, так как ошибка на любом этапе может привести к невозможности подключения клиентов или повреждению данных. Вам предстоит работать не только с консолью администрирования 1С, но и непосредственно с инструментами управления базой данных. Правильное выполнение последовательности действий гарантирует, что ваша копия будет работать стабильно и идентично оригиналу.
В этой статье мы детально разберем алгоритм действий от подготовки окружения до финальной регистрации базы в списке 1С. Особое внимание уделим нюансам переключения режимов доступа и правам пользователей, так как именно эти аспекты чаще всего становятся причиной проблем после восстановления.
Подготовка окружения и проверка целостности бэкапа
Прежде чем приступать к активным действиям в SQL Server Management Studio, необходимо убедиться в наличии всех требуемых ресурсов. У вас должен быть актуальный файл резервной копии с расширением .bak, доступ к серверу с правами системного администратора (sysadmin) и свободное дисковое пространство. Объем свободного места должен превышать размер файла бэкапа как минимум в 1.5 раза, учитывая файлы данных .mdf и журналы транзакций .ldf.
Критически важно проверить целостность самого архива перед началом процедуры восстановления. Поврежденный файл бэкапа может привести к ошибке в середине процесса, оставив базу в нерабочем состоянии. Для этого можно использовать встроенные средства проверки или попробовать открыть заголовок файла через команды T-SQL. Если файл скачивался по сети, сверьте его контрольную сумму с оригиналом.
Также следует определить, где именно будут размещены файлы восстанавливаемой базы. По умолчанию SQL Server предложит пути, указанные в оригинальной базе, что может быть неприемлемо на новом сервере или при изменении структуры дисков. Заранее подготовьте папки с корректными правами доступа для службы SQL Server.
⚠️ Внимание: Никогда не пытайтесь восстановить бэкап от более новой версии SQL Server на сервер с более старой версией движка. Это технически невозможно без промежуточной конвертации, которая не поддерживается штатными средствами.
Перед восстановлением убедитесь, что учетная запись, под которой работает служба SQL Server, имеет права Full Control на папку, куда будут восстановлены файлы данных.
Запуск мастера восстановления в SQL Server Management Studio
Для начала работы запустите SQL Server Management Studio и подключитесь к целевому экземпляру сервера. В обозревателе объектов найдите узел Базы данных (Databases). Щелкните по нему правой кнопкой мыши и выберите пункт Восстановить базу данных... (Restore Database). Откроется окно мастера, где вам предстоит указать основные параметры операции.
В разделе Источник (Source) выберите опцию Устройство (Device). Нажмите кнопку с тремя точками ... для выбора физического файла. В появившемся диалоговом окне добавьте ваш файл .bak. Система автоматически считает заголовок файла и отобразит содержимое набора резервных копий.
Далее необходимо задать имя восстанавливаемой базы в поле База данных (To database). Вы можете ввести новое имя, если развертываете копию рядом с оригиналом, или выбрать существующую базу для перезаписи. При выборе существующей базы система предупредит о том, что текущие данные будут потеряны.
Настройка параметров файлов и путей размещения
Один из самых ответственных этапов — настройка путей к физическим файлам. Перейдите на вкладку Файлы (Files) в окне мастера восстановления. Здесь вы увидите список логических имен файлов базы данных и их физические пути. По умолчанию пути будут соответствовать тем, что были на сервере-источнике, что часто вызывает ошибку "Файл не найден" при восстановлении на другом железе.
Вам необходимо вручную изменить столбец Восстановить как (Restore As), указав актуальные пути на вашем сервере. Убедитесь, что указываемые директории существуют. Если вы меняете имя базы данных, рекомендуется также изменить имена файлов .mdf и .ldf, чтобы они соответствовали новому имени базы и не конфликтовали с другими проектами.
Не забудьте про опцию Перезаписать существующую базу данных (Overwrite the existing database), если вы восстанавливаетесь поверх старой версии. Также полезно установить галочку Закрыть существующие подключения к целевой базе данных (Close existing connections to destination database). Это принудительно разорвет сессии пользователей, которые могут блокировать процесс восстановления.
ALTER DATABASE [NameDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- Эта команда принудительно закрывает все подключения перед восстановлением
☑️ Проверка перед нажатием ОК
Управление параметрами восстановления и режимами доступа
На вкладке Параметры (Options) находятся важные настройки поведения СУБД во время и после процесса. Особое внимание уделите пункту Состояние восстановления (Recovery state). Для полноценного запуска базы 1С необходимо выбрать опцию RESTORE WITH RECOVERY. Это завершит процесс отката незавершенных транзакций и переведет базу в рабочий режим.
Если вы выберете RESTORE WITH NORECOVERY, база останется в состоянии восстановления, и подключиться к ней из 1С будет невозможно. Этот режим используется только при цепочке восстановления из нескольких дифференциальных бэкапов или журналов транзакций. Для одиночного полного бэкапа это ошибка.
Также проверьте настройки ограниченного доступа. После восстановления база может остаться в однопользовательском режиме, если это было задано в скрипте или настройках бэкапа. Для нормальной работы 1С требуется многопользовательский режим. Убедитесь, что флажок Ограничить доступ (Restrict access) снят или установлен в значение MULTI_USER.
⚠️ Внимание: Интерфейс и названия пунктов в SQL Server Management Studio могут незначительно отличаться в зависимости от версии продукта (2016, 2019, 2022). Всегда ориентируйтесь на английские названия опций, если работаете в русифицированной версии с неточным переводом.
Регистрация базы в списке информационных баз 1С
После успешного завершения процесса в SQL Server, база данных существует на уровне СУБД, но еще не видна в списке баз программы 1С:Предприятие. Для завершения процедуры необходимо запустить консоль администрирования серверов 1С (ras) или использовать графический интерфейс запуска 1С в режиме конфигуратора с правами администратора.
Наиболее простой способ для локальной регистрации — через окно запуска 1С. Нажмите кнопку Добавить, выберите тип расположения базы На сервере 1С:Предприятия. В поле Кластер серверов укажите имя или IP вашего сервера 1С, а в поле Имя базы в списке 1С придумайте понятное название.
На следующем шаге мастера добавления вам потребуется указать параметры подключения к СУБД. Выберите тип СУБД MS SQL Server, введите имя сервера баз данных и выберите из выпадающего списка ту базу, которую вы только что восстановили. Если список пуст, проверьте права доступа учетной записи, под которой вы работаете в 1С.
| Параметр | Описание | Пример значения |
|---|---|---|
| Сервер 1С | Имя хоста или IP кластера | srv-1c-prod или localhost |
| Имя базы 1С | Название для списка запуска | Бухгалтерия (Тест) |
| Сервер БД | Экземпляр SQL Server | SQL01\SQLEXPRESS |
| База данных SQL | Физическое имя в СУБД | Accounting_DB_Restore |
База появляется в списке 1С только после явной регистрации в кластере серверов, простое наличие в SQL Server недостаточно для работы платформы.
Настройка прав доступа пользователей и устранение ошибок
Частой проблемой после развертывания базы является ошибка входа пользователей с сообщением о неверном логине или пароле. Это происходит из-за рассинхронизации идентификаторов безопасности (SID) между сервером и восстановленной базой. Пользователь sa или доменные учетные записи могут потерять связь со своими логинами внутри базы.
Для решения этой проблемы необходимо выполнить переназначение пользователей. Зайдите в свойства восстановленной базы в SSMS, перейдите в раздел Безопасность -> Пользователи. Проверьте, есть ли там пользователи с восклицательным знаком или статусом ошибки. Используйте команду ALTER USER для связки логина и пользователя.
USE [NameDB];
ALTER USER [User1C] WITH LOGIN = [User1C];
-- Команда перепривязывает пользователя базы к логину сервера
Также убедитесь, что роль db_owner назначена корректно. Для работы 1С пользователь базы данных должен обладать полными правами внутри своей базы. Если вы используете аутентификацию Windows, убедитесь, что группа домена добавлена в логины SQL Server и имеет доступ к конкретной базе.
Что делать, если ошибка "Лицензия не найдена"?
Ошибка часто возникает не из-за базы, а из-за отсутствия ключа защиты на новом сервере или неверной даты на компьютере. Проверьте наличие ключей HASP в диспетчере лицензий 1С.
Частые вопросы по восстановлению баз данных
Можно ли восстановить базу SQL на сервер с другой версией 1С?
Да, структура базы данных SQL зависит от версии платформы 1С, записанной в системных таблицах. Однако сам механизм восстановления SQL Server не проверяет версию 1С. После восстановления вам может потребоваться обновление конфигурации базы данных через режим Предприятие с ключом /UpdateDBCfg, если версии платформы существенно различаются.
Сколько времени занимает восстановление базы размером 50 Гб?
Время зависит от скорости дисковой подсистемы (IOPS) и процессора. На современных SSD массивах процесс может занять от 5 до 15 минут. На традиционных HDD это может растянуться до часа и более. Сжатие бэкапа при создании также влияет на скорость: сжатый файл меньше пишется на диск, но требует ресурсов CPU на распаковку.
Что означает ошибка "Оператор не может изменить базу данных, так как она используется"?
Эта ошибка возникает, если к базе есть активные подключения. Перед восстановлением необходимо перевести базу в однопользовательский режим или принудительно завершить все процессы. В мастере восстановления SSMS для этого есть галочка "Закрыть существующие подключения".
Нужно ли делать выгрузку .dt перед восстановлением из .bak?
Нет, файл .bak является полным аналогом базы и содержит все необходимые данные. Выгрузка в .dt требуется только для переноса между разными СУБД (например, из MSSQL в PostgreSQL) или для передачи конфигурации без данных. Для полного клонирования среды .bak предпочтительнее.