如何锁定 SQL Server 数据库以防止更改?

8

我希望我的数据库(SQL Server 2008)在某些维护操作期间(备份,转移到其他DB服务器等)仍然可以进行读取,但保持不可变状态,如何在C#中以编程方式锁定更改?

1个回答

14

您可以执行ALTER DATABASE <mydb> SET READ_ONLY将数据库设置为只读模式。

如果希望该命令在无法立即执行时失败,可以按如下指定:

    ALTER DATABASE <mydb> 
    SET READ_ONLY
    WITH NO_WAIT
如果你想让它回滚所有打开的连接,你需要将命令指定为如下方式:
    ALTER DATABASE <mydb> 
    SET READ_ONLY
    WITH ROLLBACK IMMEDIATE

这些选项在SQL Server图书在线文档中有很好的说明。


谢谢,这看起来有时候是有效的,但是当我在 SQL Server Management Studio 中执行查询的一半时间,执行会挂起并且无法返回结果... - user1088045
您可以指定 WITH NO_WAIT,这样当由于存在未完成的事务等原因无法执行命令时,它会立即失败。或者您可以指定 WITH ROLLBACK IMMEDIATE,使其回滚所有未完成的事务。 - Filip De Vos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接