【发布时间】:2010-02-08 05:33:43
【问题描述】:
这是对我问过的earlier question 的澄清。它与那个问题有很大不同,我认为它可以独立存在。
我每半年创建一次生产数据库的快照。然后,用户可以通过从前端 GUI 切换后端数据库来查看历史数据。因为它是历史数据,所以它必须保持只读状态。
但是,有时新字段会添加到当前数据库中的表中。如果前端期望这些字段存在,这可能会导致问题。我们的解决方案是动态添加字段,如果需要该字段,则将它们设置为 null 或适当的默认值。这意味着不能将数据库设置为只读,因为这会阻止更改表结构。为了解决这个问题,我们为所有用户提供 db_datareader、db_denydatawriter 和 db_ddladmin 角色。
所有这些都非常有效,我们没有遇到任何问题。但是,数据仍然可以由 dbo(即我)更改。我担心有一天我会不小心更改这些历史数据(可能没有意识到),从而损害其完整性。
尝试的解决方案:
我尝试将 db_denydatawriter 的角色分配给 dbo,但失败了(请参阅 aforementioned question)。
该问题的另一个建议是在进行架构更改时关闭和打开快照的只读状态。这行得通,除了它会导致每个快照模式更改大约两分钟的延迟。我们通常不会对架构进行大量更改,但如果可能的话,我想避免这种情况。
任何其他想法将不胜感激。
【问题讨论】:
标签: sql-server