Назначить роль db_denydatawriter для пользователя dbo - PullRequest
2 голосов
/ 05 февраля 2010

Когда я пытаюсь это сделать, я получаю следующее сообщение об ошибке:

Не удалось добавить участника для DatabaseRole 'db_denydatawriter'. (Microsoft.SqlServer.Smo)
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Возникла исключительная ситуация при выполнении оператора или пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
Невозможно использовать зарезервированное имя пользователя или роли 'dbo'. (Microsoft SQL Server, ошибка: 15405)

У меня есть база данных, которая должна оставаться «замороженной». Я хочу сохранить право собственности на базу данных , но не могу (как dbo) случайно изменить данные. Есть ли другой способ сделать это?


РЕДАКТИРОВАТЬ: Я решил открыть новый вопрос , чтобы адресовать строки ниже:
Данные в базе данных должны оставаться замороженными. Однако структура может измениться.

База данных фактически состоит из нескольких баз данных. По сути, они представляют собой снимки производственной базы данных, сделанные каждые полгода. Пользователи могут просматривать исторические данные, переключая внутреннюю базу данных из интерфейсного интерфейса. Однако иногда новые поля добавляются в таблицы в текущей базе данных. Это может вызвать проблемы, если клиент ожидает, что эти поля будут присутствовать. Наше текущее решение - добавлять поля на лету (пользователи имеют роли db_datareader, db_denydatawriter и db_ddladmin). Это означает, что базу данных нельзя сделать доступной только для чтения, поскольку это предотвратит изменения в структуре таблицы.

1 Ответ

3 голосов
/ 05 февраля 2010

установить БД только для чтения:

ALTER DATABASE [db_name] SET READ_ONLY

...