SQL*_*ini 3 sql-server restore
当我们将数据库从 prod 恢复到 dev 时,哪种方法更好地断开访问数据库的其他连接?我使用的是 SQL Server 2008r2
1. 更改为单用户模式
use master
Go
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Go
RESTORE DATABASE [MyDB] FROM DISK = N'D:\Restore_Backup\Restore_05042015\DB.bak'
WITH FILE = 1,
MOVE N'DB'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB.mdf',
MOVE DB_log'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB_log.ldf',
NOUNLOAD,
REPLACE,
STATS = 10
GO
ALTER DATABASE MyDB SET MULTI_USER
Go
Run Code Online (Sandbox Code Playgroud)
2. 数据库下线并恢复数据库
USE master
GO
ALTER DATABASE MyDB
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE [MyDB] FROM DISK = N'D:\Restore_Backup\Restore_05042015\DB.bak'
WITH FILE = 1,
MOVE N'DB'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB.mdf',
MOVE DB_log'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB_log.ldf',
NOUNLOAD,
REPLACE,
STATS = 10
GO
ALTER DATABASE MyDB
SET OFFLINE
GO
Run Code Online (Sandbox Code Playgroud)
哪种方法可以确保我是唯一的用户,这样我就可以毫无问题地进行恢复?
我会把它设置为离线。我这样说是因为SINGLE_USER模式通常用于允许管理员对数据库执行某种维护,而无需用户尝试访问并可能干扰维护。
对于恢复来说,无论哪种方式都并不重要,因为您的用户将经历同样的事情,即他们将无法连接。该方法的一个可能的烦恼SINGLE_USER是,如果用户窃取了您之前的单个会话并阻止您执行恢复。
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |