MSSQL Error 15247: User does not have permission to perform this action
- Ошибка
Msg 15247, Level 16, State 1: User does not have permission to perform this actionпри выполнении DDL операций или регламентных процедур. - Кластер 1С:Предприятие не может автоматически создать новую информационную базу на сервере СУБД.
- Сбои при попытке выполнить
DBCC CHECKDB,BACKUP DATABASEили чтение DMV (динамических представлений).
1. Проверка текущих разрешений учетной записи
-- Проверка эффективных серверных прав
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
-- Проверка эффективных прав в текущей базе данных
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');2. Назначение минимально необходимых прав для учетной записи 1С
Для учетной записи, под которой кластер 1С подключается к СУБД, требуются следующие привилегии:
-- 1. Для создания и управления базами данных через консоль кластера 1С:
ALTER SERVER ROLE [dbcreator] ADD MEMBER [usr1cv8_login];
-- 2. Для сбора технологического журнала и мониторинга индексов:
GRANT VIEW SERVER STATE TO [usr1cv8_login];
GRANT VIEW ANY DEFINITION TO [usr1cv8_login];
-- 3. Внутри самой базы данных 1С:
USE your_1c_db;
ALTER ROLE [db_owner] ADD MEMBER [usr1cv8_user];3. Исправление прав для выполнения BACKUP и RESTORE
USE your_1c_db;
GRANT BACKUP DATABASE TO [backup_operator_login];
GRANT BACKUP LOG TO [backup_operator_login];4. Проверка явных запретов (DENY)
SELECT pr.name, pe.permission_name, pe.state_desc
FROM sys.server_permissions pe
JOIN sys.server_principals pr ON pe.grantee_principal_id = pr.principal_id
WHERE pe.state_desc = 'DENY'; Частые вопросы (FAQ)
Почему учетная запись с ролью db_owner не может выполнить DBCC CHECKDB?
Для выполнения расширенных команд DBCC или операций с файловой структурой требуются серверные привилегии sysadmin или специальные права на уровне сервера.
Обязательно ли давать пользователю 1С роль sysadmin на сервере SQL?
Нет. По соображениям безопасности достаточно членства в серверной роли dbcreator и роли db_owner внутри каждой рабочей базы данных 1С.
Что делать, если DENY на уровне роли перекрывает GRANT пользователя?
В модели безопасности SQL Server явный запрет (DENY) всегда имеет наивысший приоритет. Удалите запрещающее правило через команду REVOKE.
Какие права нужны для запуска профилирования SQL Server Profiler / Extended Events?
Требуется серверная привилегия ALTER ANY EVENT SESSION или VIEW SERVER STATE / CONTROL SERVER.