Я пытаюсь создать набор разрешений, при котором вход в систему 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