1.备份一个bak文件,其中database_name为数据库名,目录路径需要存在。这是完整备份。

BACKUP DATABASE [database_name]
TO DISK='D:\database_name.bak'

2.检查备份文件的逻辑信息,主要为LogicName,一个是数据文件mdf,一个是日志文件ldf

RESTORE FILELISTONLY
FROM DISK = 'D:\database_name.bak';

3.还原数据库

RESTORE DATABASE [database_name]
FROM DISK='D:\database_name.bak'

若还原到本地,且改名的需求,可用以下命令,其中Move后的字符串,为第二部中查询到的逻辑名LogicName

RESTORE DATABASE [database_name]
FROM DISK='D:\database_name.bak'
WITH
MOVE 'database_name' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\new_database_name.mdf',
MOVE 'database_name_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\new_database_name_log.ldf',
STATS = 10,REPLACE

其他几个常用命令

--脱库,使数据库离线,不会有其他链接上来
ALTER DATABASE [database_name] SET OFFLINE WITH ROLLBACK IMMEDIATE
--挂载,是数据库重新上线
ALTER DATABASE [database_name] SET ONLINE
--当数据库显示正在恢复中,是用该命令可恢复正常
RESTORE DATABASE [database_name] WITH RECOVERY
--当数据库显示单用户,该命令修改为多用户正常模式
ALTER DATABASE [database_name] SET MULTI_USER

差异备份

BACKUP DATABASE [database_name]
TO DISK='D:\database_name_diff.bak'
WITH DIFFERENTIAL

镜像备份

BACKUP DATABASE [database_name]
TO DISK='D:\database_name_mirror1.bak'
MIRROR
TO DISK='D:\database_name_mirror2.bak'
WITH FORMAT
02-10 18:47