当我尝试这样做时,收到以下错误消息:
为DatabaseRole'db_denydatawriter'添加成员失败。 (Microsoft.SqlServer.Smo)
其他信息:
执行Transact-SQL语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)
无法使用保留的用户或角色名称'dbo'。 (Microsoft SQL Server,错误:15405)
我有一个需要保持“冻结”的数据库。 我想维护数据库的所有权,但要防止自己(如dbo)意外修改数据。还有另一种方法可以实现这个目标吗?
编辑:我决定打开new question来解决以下问题:
数据库中的数据需要保持冻结状态。但是,结构可能会改变。 击>
数据库实际上是几个数据库。它们本质上是半年生产数据库的快照。然后,用户可以通过从前端GUI切换后端数据库来查看历史数据。但是,有时新字段会添加到当前数据库的表中。如果前端期望这些字段存在,这可能会导致问题。我们当前的解决方案是动态添加字段(用户具有db_datareader,db_denydatawriter和db_ddladmin角色)。这意味着数据库不能被设置为只读,因为这会阻止对表结构的更改。
答案 0 :(得分:3)
将db设置为只读:
ALTER DATABASE [db_name] SET READ_ONLY