Назад | Перейти на главную страницу

Минимальное разрешение на восстановление * некоторых * баз данных на SQL Server 2012

Я пытаюсь создать набор разрешений, при котором вход в систему SQL может создавать резервные копии всех баз данных, но только восстанавливать резервные копии в базах данных TEST. Для восстановления в LIVE (который находится на том же сервере SQL) следует использовать другой логин.

Вот Здесь утверждается:

Если база данных существует, разрешения на ВОССТАНОВЛЕНИЕ по умолчанию принадлежат членам фиксированных ролей сервера sysadmin и dbcreator и владельцу (dbo) базы данных.

Исходя из этого, я попытался сделать логина владельцем баз данных TEST с разрешением db_owner db, но без роли сервера sysadmin. В базах данных LIVE логин имеет: db_accessadmin, db_backupoperator, db_datareader, db_denydatawriter, db_securityadmin (и не владеет).

Но Restore все равно вообще не работает. Если я попытаюсь выполнить восстановление, я не смогу просмотреть наборы резервных копий в файле .bak. Я думаю, что диалог выполняет ВОССТАНОВЛЕНИЕ ЗАГОЛОВКИ ТОЛЬКО в фоновом режиме; если я бегу RESTORE HEADERONLY FROM DISK = 'D:\Path\backup.bak' я получил CREATE DATABASE permission denied in database 'master'. Я могу просматривать резервные копии с ролью системного администратора.

Возможно ли это без сисадмина?

Несмотря на то, что все эти администраторы баз данных кричали на мой вопрос, я подумал, что избавлю вас от ваших страданий:

Я решил, что правильный способ решить эту проблему - создать второй именованный экземпляр сервера SQL, так что существует дополнительное разделение между Live и Test DB. Затем вы можете настроить любые разрешения для каждого экземпляра.

Кажется, вам нужна роль сервера sysadmin ИЛИ dbcreator И роль базы данных db_owner для RESTORE