将db_denydatawriter的角色分配给用户dbo

时间:2010-02-05 17:17:51

标签: sql-server dbo

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

  

为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角色)。这意味着数据库不能被设置为只读,因为这会阻止对表结构的更改。

1 个答案:

答案 0 :(得分:3)

将db设置为只读:

ALTER DATABASE [db_name] SET READ_ONLY