如何锁定 Sql Server 2012 并阻止建立连接并执行数据迁移

How to lock Sql Server 2012 and Prevent Establishing Connection and perform Data migration

在我的大学管理系统中,我想在特定日期执行数据迁移,因此我想关闭所有打开的连接并以 Db 管理员用户身份执行数据迁移,然后允许用户建立与数据库的连接

经过一番搜索,我找到了那个脚本

To Disable MultiUser

 alter database dbName set single_user with rollback immediate

To Enable MultiUser

alter database dbName set multi_user with rollback immediate

问题:

如何作为数据库管理员执行我需要的操作?

这是一个很好的方法还是更好的方法?

Disable Script在做什么?

Enable Script在做什么?

从此Disable Script所有打开的连接都将关闭?

你说的和我们在这种情况下的做法差不多。第一条语句将数据库置于“single_user”模式。这意味着,在该语句之后,只有您当前的会话连接到数据库。 “with rollback immidiate”选项指定关闭并回滚所有打开的事务和当前的查询和连接,因此之后数据库处于一致状态。

就我个人而言,我不喜欢“single_user”模式,因为如果您不小心关闭了连接,它允许任何单个用户连接。我会改用“restricted_user”。在那种模式下,只允许 db_owner 固定数据库角色和 dbcreator 和 sysadmin 固定服务器角色的成员连接到数据库,但不限制他们的数量。如果您的用户不是 db_owner.

,那效果会更好

你的第二个例子只是颠倒了那个改变并再次向所有人打开数据库(“multi_user”)。