Как исправить ошибку «База данных не найдена в сервере баз данных» при переносе 1С на новый SQL Server

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переносе информационных баз 1С:Предприятие с одного сервера SQL на другой (например, при обновлении с SQL Server 2012 до 2016) администраторы часто сталкиваются с ситуацией, когда база успешно восстановлена из бэкапа (.bak), видна в SQL Server Management Studio, но консоль администрирования 1С упорно выдает ошибку: «Ошибка создания информационной базы: База данных [...] не найдена в сервере баз данных». Рассмотрим подробнее, почему это происходит и как правильно настроить окружение для корректной работы.

Анализируем причину возникновения ошибки

Основная причина такого поведения кроется не в физическом отсутствии базы, а в правах доступа и механизмах идентификации пользователей внутри SQL Server. Когда мы восстанавливаем базу из файла бэкапа на новом сервере, SQL Server назначает владельцем базы (Database Owner) того пользователя, который выполнял операцию восстановления (обычно это доменная учетная запись администратора). Однако служба 1С:Предприятие пытается подключиться к базе, используя свои учетные данные (часто это специальный SQL-пользователь, например, dbuser).

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

Шаг 1. Проверка протоколов сетевого взаимодействия

Прежде чем приступать к настройке прав, нам необходимо убедиться, что новый экземпляр SQL Server готов принимать сетевые соединения. По умолчанию в новых версиях SQL Server протокол TCP/IP может быть отключен. Проанализируем настройки в SQL Server Configuration Manager:

  1. Откроем SQL Server Configuration Manager.
  2. Перейдем в раздел SQL Server Network Configuration -> Protocols for [Имя_Экземпляра].
  3. Убедимся, что TCP/IP и Shared Memory находятся в статусе Enabled.
  4. Если вы используете именованный экземпляр (Named Instance), убедитесь, что служба SQL Server Browser запущена.

Без включенного TCP/IP сервер 1С не сможет «увидеть» SQL-сервер, даже если они установлены на одной физической машине, так как консоль 1С всегда инициирует сетевое соединение.

Шаг 2. Настройка владельца базы данных

Выясним причину несоответствия владельца. В свойствах восстановленной базы данных часто оказывается, что владельцем является учетная запись, под которой делали Restore. Нам нужно сменить владельца на того SQL-пользователя, который указан в настройках информационной базы в консоли 1С.

Рассмотрим, как сменить владельца через графический интерфейс (SSMS):

  1. Нажмем правой кнопкой мыши на базу данных, выберем Properties (Свойства).
  2. Перейдем на вкладку Files (Файлы).
  3. В поле Owner (Владелец) нажмем на кнопку с тремя точками и выберем нужного SQL-пользователя (например, usr1cv8).

Также это можно сделать с помощью SQL-запроса, что гораздо быстрее и надежнее:


USE [Имя_Вашей_Базы]
GO
ALTER AUTHORIZATION ON DATABASE::[Имя_Вашей_Базы] TO [Логин_Пользователя_SQL]
GO

Шаг 3. Решение проблемы «осиротевших» пользователей (Orphaned Users)

Даже если имя пользователя SQL совпадает на старом и новом серверах, их внутренние идентификаторы (SID) различаются. Это создает проблему «осиротевших» пользователей: пользователь внутри базы есть, но он не связан с логином на уровне сервера. Проанализируем ситуацию и исправим связь.

Для начала удалим старого пользователя из ветки База данных -> Безопасность -> Пользователи, если он мешает созданию нового. Но правильнее будет «склеить» их командой:


USE [Имя_Вашей_Базы]
GO
ALTER USER [Имя_Пользователя] WITH LOGIN = [Имя_Пользователя]
GO

После этого обязательно проверим Сопоставление пользователей (User Mapping) в свойствах логина на уровне сервера:

  1. Перейдем в Security -> Logins на уровне сервера.
  2. Откроем свойства пользователя 1С.
  3. В разделе User Mapping поставим галочку напротив нашей базы и в нижней части окна убедимся, что назначена роль db_owner.

Шаг 4. Уровень совместимости и оптимизация

Посмотрим на параметры базы после переезда. При восстановлении с SQL 2012 на SQL 2016 база сохраняет старый уровень совместимости (Compatibility Level 110). Для полноценного использования возможностей нового движка рекомендуется поднять его до 130 (для SQL 2016).

Разберем, как это сделать:

  1. В свойствах базы перейдем на вкладку Options.
  2. Установим Compatibility level в значение SQL Server 2016 (130).

Важно: После смены версии или переноса базы обязательно нужно обновить статистику, иначе 1С может начать работать крайне медленно из-за неоптимальных планов запросов. Выполним команду:


USE [Имя_Вашей_Базы]
GO
EXEC sp_updatestats
GO

Резюме действий

Подводя итог, если 1С не видит базу на новом SQL-сервере, выполним следующие шаги:

  1. Проверим, включен ли TCP/IP в SQL Configuration Manager.
  2. Убедимся, что в настройках SQL Server включен Mixed Mode Authentication (смешанный режим авторизации).
  3. Назначим SQL-пользователя, под которым работает 1С, владельцем базы (db_owner).
  4. Проверим и при необходимости исправим SID пользователя командой ALTER USER.
  5. Обновим статистику базы данных для корректной работы оптимизатора.

Как показывает практика, в 90% случаев проблема решается именно на этапе назначения правильного Owner в свойствах файлов базы данных SQL, так как 1С критично относится к правам доступа на уровне метаданных сервера.

← На главную