Как исправить ошибку «Разрешение CREATE TABLE запрещено» при создании базы 1С на MS SQL Server?

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

При развертывании новой информационной базы 1С:Предприятие на сервере MS SQL Server системные администраторы часто сталкиваются с ошибкой: «Microsoft SQL Server Native Client 11.0: Разрешение CREATE TABLE запрещено в базе данных "test_1". HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, native=262». Эта ситуация кажется парадоксальной, так как у пользователя SQL Server могут быть назначены роли dbcreator и diskadmin, которые, на первый взгляд, должны обеспечивать полные права на создание базы. Рассмотрим подробнее, почему возникает эта ошибка и как её исправить по шагам.

Выясним причину ошибки: конфликт ролей и прав

Проанализируем ситуацию. Когда консоль кластера 1С инициирует создание базы данных, процесс происходит в несколько этапов. Сначала SQL Server создает файлы базы данных (MDF и LDF) — для этого достаточно роли dbcreator. Однако сразу после создания файлов 1С пытается создать в новой базе системные таблицы, необходимые для работы платформы. На этом этапе SQL Server проверяет права пользователя внутри конкретной созданной базы.

Если в процессе создания произошел сбой или настройки безопасности сервера ограничены, пользователь может создать базу, но не стать её автоматическим владельцем (dbo). В результате выполнение команды CREATE TABLE блокируется, так как роль dbcreator дает право только на создание самой оболочки базы, но не на управление объектами внутри неё. Также стоит учитывать состояние системной базы model, настройки которой копируются в каждую новую базу.

Решение 1: Создание базы через SQL Server Management Studio (SSMS)

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

  1. Откроем SQL Server Management Studio и подключимся к нужному экземпляру сервера под учетной записью администратора (SA).
  2. Нажмем правой кнопкой мыши на раздел «Databases» и выберем «New Database».
  3. Укажем имя базы (например, test_1). На вкладке «Files» крайне важно в поле Owner (Владелец) указать того самого пользователя SQL, под которым 1С будет подключаться к базе.
  4. Нажмем «OK». Теперь у нас есть пустая база, где наш пользователь является полноценным владельцем (db_owner).
  5. Вернемся в консоль администрирования кластера 1С. При создании информационной базы укажем имя уже созданной пустой базы в поле «Информационная база». Платформа увидит существующую структуру и начнет заполнять её таблицами, не натыкаясь на запрет CREATE TABLE.

Решение 2: Устранение ошибки «Set owner failed» (Ошибка 15151)

Иногда при попытке назначить владельца базы в SSMS возникает ошибка: «Невозможно найти база данных, так как она не существует или отсутствуют разрешения (Error: 15151)». Рассмотрим, как решить эту проблему:

Эта ошибка часто указывает на то, что база данных находится в некорректном состоянии или у текущего сеанса администратора недостаточно полномочий на смену владельца в конкретном контексте безопасности. Проанализируем ситуацию с помощью SQL-запроса. Попробуем принудительно назначить владельца через скрипт:


USE [test_1];
GO
ALTER AUTHORIZATION ON DATABASE::[test_1] TO [имя_вашего_пользователя];
GO

Использование команды ALTER AUTHORIZATION является более современным и предпочтительным способом, чем устаревшая процедура sp_changedbowner. Если база «не видна», убедитесь, что файлы базы не заблокированы антивирусом и у службы SQL Server есть полные права на папку, где лежат файлы данных.

Решение 3: Проверка прав системной роли sysadmin

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

Посмотрим, как назначить роль: в SSMS перейдем в «Security» -> «Logins», откроем свойства нашего пользователя и на вкладке «Server Roles» отметим флажком sysadmin. После завершения создания базы 1С уровень прав можно попробовать понизить, но первичная инициализация требует максимума полномочий.

Решение 4: Проверка системной базы model

Любая новая база в MS SQL — это копия базы model. Если в базе model установлены специфические запреты или изменены права доступа для роли public, эти ограничения перейдут и в вашу базу test_1. Проанализируем состояние model:

  1. Проверим, не переполнено ли место на диске, так как это мешает расширению системных таблиц при копировании шаблона.
  2. Убедимся, что в свойствах model не стоит запрет на создание таблиц для стандартных ролей.
  3. Проверим наличие свободного места в tempdb, так как транзакции по созданию объектов базы 1С активно используют временное хранилище.

Рекомендация по драйверам: Native Client против OLE DB

В тексте ошибки часто фигурирует Microsoft SQL Server Native Client 11.0. Разберем важный технический нюанс: этот драйвер считается устаревшим и может некорректно работать с новыми версиями SQL Server (2019, 2022). Если вышеперечисленные методы не помогают, рекомендуется установить на сервере 1С актуальный Microsoft OLE DB Driver for SQL Server (msoledbsql). Это обеспечит более стабильное взаимодействие платформы с СУБД и более прозрачную обработку ошибок безопасности.

Таким образом, мы выяснили, что основной причиной ошибки является нехватка прав на манипуляцию объектами внутри только что созданной базы. Совместное использование предварительного создания базы в SSMS и временное повышение прав пользователя до sysadmin гарантированно решает проблему инициализации информационной базы 1С.

← На главную