在即将到来的更新中,我需要将我们服务器中的多个表从 UTF-16 转换为 UTF-8。我预计这将需要几个小时。
有没有关闭 INSERTS 和 UPDATES,但仍然允许数据库中的 SELECTS 的好方法?
或者我是否需要在更新发生时阻止业务级别的更改/关闭数据库?
如果没有进一步了解您的数据库架构、权限等以及您对应用程序的策略的一些想法,就很难做出规定。至少,该应用程序是否甚至允许您在表更新被阻止的情况下以只读模式运行?
在一个非常基本的层面上,“是”你可以这样做......
DENY INSERT, UPDATE, DELETE ON <table> TO <user>
但是不可能说你的应用程序将如何反应。根据我的经验,如果您这样做,大多数应用程序都会到处乱写错误并发出血腥的谋杀,甚至可能损坏数据(未经检查的错误,事务使用不当等)。我很少(可能从来没有)看到一个应用程序在数据库访问不符合设计/预期时优雅地切换到只读模式。
所以测试!在受控的非生产环境中进行测试、测试、测试,直到您拥有支持变更的文档化流程。
如果您的要求不允许长时间停机(或根本不停机),则有更复杂的方法来处理此问题。一种想法是添加一个 after insert / after update 触发器,以在您对较小批次运行维护时自动转换新字段中的新 / 更新记录。转换完所有数据后,将应用程序切换到新字段并删除旧字段。
归档时间: |
|
查看次数: |
663 次 |
最近记录: |