К статье
Практический материал

Администрирование · 11 мин

Как поменять владельца базы данных SQL для 1С

Как сменить владельца базы данных SQL Server для 1С через SSMS и T-SQL, зачем это нужно, типичные ошибки и проверка результата после смены владельца.

Владелец базы данных (dbo) в MS SQL Server — это логин, которому принадлежит база на уровне сервера. Для баз 1С этот параметр становится критичным при восстановлении копий на новом сервере, переносе баз между площадками или настройке прав доступа. Если владельцем остаётся удалённая или отключённая учётная запись, часть операций — обновление конфигурации, работа агентских заданий, создание планов обслуживания — начинает завершаться ошибками.

Стандартная рекомендация для баз 1С — назначить владельцем встроенную учётную запись sa или выделенный сервисный логин с известным паролем. Это снимает зависимость от персональных учётных записей администраторов, которые со временем блокируются или удаляются из домена.

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

Зачем менять владельца базы и когда это действительно нужно

Самая частая ситуация — база восстановлена из резервной копии на новом сервере. При восстановлении владельцем автоматически становится логин, под которым выполнялся RESTORE. Если это была персональная учётная запись администратора, после её блокировки или увольнения сотрудника начинаются сбои: не выполняются задания агента SQL Server, падают операции, требующие прав владельца.

Вторая ситуация — ошибки вида «The server principal is not able to access the database under the current security context» при обновлении конфигурации 1С или при работе регламентных заданий. Часто причина именно в том, что владелец базы — отключённый или несуществующий логин.

Третья причина — приведение баз к единому стандарту внутри организации. Когда на сервере десятки баз 1С с разными владельцами, аудит прав и настройка обслуживания усложняются. Назначение одного сервисного владельца всем базам упрощает администрирование.

Менять владельца не нужно, если база работает стабильно, текущий владелец — активный сервисный логин, а проблем с заданиями и обновлениями нет. Смена владельца — это точечная операция под конкретную задачу, а не обязательная процедура обслуживания.

Подготовка: что проверить перед сменой владельца

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

Убедитесь, что у вас есть права на выполнение операции. Сменить владельца базы может член серверной роли sysadmin или логин с разрешением TAKE OWNERSHIP на базу и IMPERSONATE на целевой логин. Проще всего работать под учётной записью с правами администратора сервера.

Определите, какой логин станет новым владельцем. Проверьте, что он существует на сервере, включён и не является отключённой доменной учётной записью. Если планируете использовать sa, убедитесь, что логин включён: на некоторых серверах его отключают из соображений безопасности.

Зафиксируйте текущего владельца, чтобы можно было вернуться к исходному состоянию. Для этого выполните запрос, показанный в разделе проверки, и сохраните результат.

Способ 1: смена владельца через SQL Server Management Studio

Графический способ подходит тем, кто редко работает с T-SQL или выполняет разовую операцию на одной базе. Подключитесь к серверу в SSMS под учётной записью с правами sysadmin.

В обозревателе объектов раскройте узел «Базы данных», найдите нужную базу 1С и откройте её свойства через контекстное меню. Перейдите на страницу «Файлы» — в верхней части окна находится поле «Владелец».

Нажмите кнопку обзора рядом с полем, в диалоге выбора введите имя логина (например, sa) или найдите его через кнопку «Обзор». Подтвердите выбор и нажмите «ОК». SQL Server применит изменение немедленно, перезапуск службы не требуется.

Если при сохранении появляется ошибка о невозможности удалить текущего владельца из роли или о сопоставлении пользователя, проверьте, не является ли новый логин уже сопоставленным пользователем базы с другими правами — такие конфликты разбираются в разделе об ошибках.

Порядок действий в SSMS
  1. 1
    Подключитесь к серверу под логином с правами sysadmin
  2. 2
    Откройте свойства базы данных 1С через контекстное меню
  3. 3
    Перейдите на страницу «Файлы» и найдите поле «Владелец»
  4. 4
    Через кнопку обзора выберите логин sa или сервисную учётную запись
  5. 5
    Нажмите «ОК» и проверьте результат запросом к sys.databases

Способ 2: смена владельца через T-SQL

Командный способ быстрее при работе с несколькими базами и удобен для автоматизации. Современный синтаксис использует инструкцию ALTER AUTHORIZATION:

ALTER AUTHORIZATION ON DATABASE::ИмяБазы TO sa;

Замените «ИмяБазы» на фактическое имя базы 1С, а sa — на нужный логин. Команда выполняется в контексте любой базы, но логичнее запускать её в master.

В старых инструкциях встречается устаревшая процедура sp_changedbowner. Она до сих пор работает, но помечена как устаревшая и может быть удалена в будущих версиях SQL Server, поэтому для новых скриптов используйте ALTER AUTHORIZATION.

Для массовой смены владельца на всех пользовательских базах можно сгенерировать команды запросом:

SELECT 'ALTER AUTHORIZATION ON DATABASE::[' + name + '] TO sa;'

FROM sys.databases

WHERE database_id > 4;

Результат скопируйте в новое окно запроса, проверьте список баз и выполните. Исключите из пакета базы, для которых владелец должен остаться особым.

sql
ALTER AUTHORIZATION ON DATABASE::MyBase1C TO sa;

Какого владельца назначить для базы 1С

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

Альтернатива — выделенный сервисный логин, например sql_1c_owner, созданный специально для владения базами. Такой подход удобен, когда политика безопасности требует отключить sa. Логину не нужны пароли сложной ротации для интерактивного входа — достаточно, чтобы он существовал и был включён.

Чего делать не стоит — назначать владельцем персональную доменную учётную запись администратора или пользователя 1С. При блокировке такой записи в домене операции, требующие контекста владельца, начнут завершаться ошибками, и диагностика причины займёт время.

Сравнение вариантов владельца

Логин sa

Подходит почти всегда; ограничение — на серверах, где sa отключён политикой безопасности

Выделенный сервисный логин

Подходит при строгих политиках безопасности; требует контроля, чтобы логин не удалили и не отключили

Доменная учётная запись

Допустима для сервисных доменных аккаунтов с гарантированным сроком жизни; не подходит для персональных записей сотрудников

Проверка результата и контрольные точки

После смены владельца убедитесь, что изменение применилось. Выполните запрос:

SELECT name, SUSER_SNAME(owner_sid) AS owner_name

FROM sys.databases

WHERE name = 'ИмяБазы';

В колонке owner_name должен отображаться новый логин. Если там NULL — владельцу базы не соответствует ни один логин сервера, и ситуацию нужно исправить немедленно.

Дополнительно проверьте работоспособность связанных процессов: запустите тестовое задание агента SQL Server, если оно настроено для базы, и выполните тестовое обновление конфигурации на копии, если смена владельца делалась ради устранения ошибок обновления.

Контрольные точки

Как проверить результат

Запрос к sys.databases
Норма

В колонке owner_name указан новый логин

Тревожный признак

Старый логин или NULL

Задания агента SQL Server
Норма

Задания по базе выполняются без ошибок

Тревожный признак

Ошибки входа или доступа в истории задания

Работа 1С
Норма

Обновление конфигурации и регламентные операции проходят штатно

Тревожный признак

Ошибки доступа к базе в контексте владельца

Типичные ошибки и их устранение

Ошибка «The proposed new database owner is already a user or aliased in the database». Новый владелец уже сопоставлен с пользователем внутри базы. Решение — удалить это сопоставление командой DROP USER в контексте базы (предварительно убедившись, что пользователь не нужен) и повторить смену владельца.

Владелец отображается как NULL. Так бывает после восстановления базы, перенесённой с другого сервера, когда SID владельца не имеет соответствующего логина. Назначьте владельца явно через ALTER AUTHORIZATION — проблема исчезнет.

Ошибки после смены владельца на «неправильный» логин. Если владельцем назначена учётная запись без логина на сервере или отключённая, вернитесь к проверенному варианту: ALTER AUTHORIZATION на sa. Операция обратима и не затрагивает данные.

Путаница между владельцем базы и правами пользователя 1С. Смена владельца базы не меняет права пользователей внутри самой 1С и не влияет на логины, под которыми пользователи подключаются. Это отдельный уровень настройки.

Типичные ошибки
01
Назначение владельцем персональной учётной записи администратора — после её блокировки перестают работать задания и обновления
02
Смена владельца без резервной копии — лишает возможности быстро откатиться при нештатной ситуации
03
Использование устаревшей sp_changedbowner в новых скриптах — процедура объявлена устаревшей
04
Игнорирование значения NULL в owner_sid после восстановления базы — скрытая причина сбоев регламентных операций

Частые вопросы

Влияет ли смена владельца базы на данные и пользователей 1С?

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

Можно ли назначить владельцем логин, под которым работают пользователи 1С?

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

Что делать, если при смене владельца появляется ошибка о существующем пользователе?

Значит, целевой логин уже сопоставлен с пользователем внутри базы. В контексте базы выполните DROP USER для этого пользователя, предварительно убедившись, что он не используется для подключений, затем повторите ALTER AUTHORIZATION. Если пользователь нужен, выберите другой логин для владения базой.

Нужно ли перезапускать SQL Server или службу 1С после смены владельца?

Нет, изменение применяется немедленно без перезапуска служб. Достаточно проверить результат запросом к sys.databases и убедиться, что зависящие от владельца операции — задания агента, обновление конфигурации — выполняются без ошибок.

Как узнать текущего владельца всех баз на сервере?

Выполните запрос SELECT name, SUSER_SNAME(owner_sid) FROM sys.databases. Он покажет все базы и их владельцев; значение NULL вместо имени сигнализирует о «потерянном» владельце, которого нужно заменить.

Отличается ли процедура для разных версий SQL Server?

Синтаксис ALTER AUTHORIZATION одинаково работает во всех поддерживаемых версиях SQL Server. Отличия касаются только интерфейса SSMS разных выпусков и устаревшей процедуры sp_changedbowner, которую в новых версиях использовать не рекомендуется.

Итог

Что важно запомнить

Владельца базы 1С на SQL Server меняют командой ALTER AUTHORIZATION ON DATABASE::ИмяБазы TO sa или через свойства базы в SSMS. Оптимальный владелец — sa или выделенный сервисный логин, но не персональная учётная запись. Перед операцией делайте резервную копию, после — проверяйте владельца через sys.databases и работу заданий агента.