2

当我尝试这样做时,我收到以下错误消息:

为 DatabaseRole 'db_denydatawriter' 添加成员失败。(Microsoft.SqlServer.Smo)
附加信息:
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
不能使用保留的用户或角色名称“dbo”。(Microsoft SQL Server,错误:15405)

我有一个需要保持“冻结”状态的数据库。 我想维护数据库的所有权,但要防止自己(作为 dbo)意外修改数据。还有另一种方法可以做到这一点吗?


编辑:我决定提出一个新问题来解决以下问题:
数据库中的数据需要保持冻结状态。但是,结构可能会发生变化。

数据库实际上是几个数据库。它们本质上是每半年拍摄一次的生产数据库的快照。然后,用户可以通过从前端 GUI 切换后端数据库来查看历史数据。但是,有时新字段会添加到当前数据库中的表中。如果前端期望这些字段存在,这可能会导致问题。我们当前的解决方案是动态添加字段(用户具有 db_datareader、db_denydatawriter 和 db_ddladmin 角色)。这意味着不能将数据库设为只读,因为这会阻止更改表结构。

4

1 回答 1

3

将数据库设置为只读:

ALTER DATABASE [db_name] SET READ_ONLY

于 2010-02-05T17:19:34.577 回答