1. 前言
在进行企业级的数据库管理过程中,MS SQL Server 是较为常用的一种数据库,由于网络、人为、硬件等因素的影响,数据库损坏和丢失的情况时常发生。而数据丢失更是对企业的影响十分严重,因此在这个时候进行数据的还原就显得尤为重要
2. MSSQL数据库的备份与还原
2.1 备份数据库
备份是指将数据库中的数据按照一定的规范和格式进行保存,以供在一定的时间内,通过还原操作使数据回到之前的状态。完成备份的方式可以通过 SQL Server Management Studio 或 通过使用 T-SQL 语句来完成。下面以使用 SQL Server Management Studio 进行演示。
第一步,打开 SQL Server Management Studio,选中需要备份的数据库:
USE [master]
GO
BACKUP DATABASE [test]
TO DISK = N'C:\backup.bak'
WITH NOFORMAT, NOINIT,
NAME = N'backup-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
重要提示:这里BACKUP DATABASE指定的是备份的数据库名,即test,TO DISK指定的是备份的路径,这个路径需要您自己设置,不然就会出现路径不存在的情况。最后的STATS是指备份进度条的扫描百分比,这个可以自定义设置。执行完此操作后,备份文件 backup.bak就生成了。
2.2 还原数据库
同样的,还原操作也可以通过 SQL Server Management Studio 或 通过使用语句来完成。下面以使用 SQL Server Management Studio 进行演示。
第一步,打开 SQL Server Management Studio,选中需要还原的数据库:
USE [master]
GO
ALTER DATABASE [test] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
在执行还原操作前需要先把数据库设置为单用户模式,这样就能够避免在还原期间有其他用户连接该数据库。接下来继续进行还原操作
USE [master]
GO
RESTORE DATABASE [test]
FROM DISK = N'C:\backup.bak'
WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 10
GO
重要提示: 这里RESTORE DATABASE指定的是需要还原的数据库名,即 test,FROM DISK指定的是需要还原的备份文件路径,这个路径需要您自己设置,上面backup.bak就是备份文件的路径。REPLACE 参数用于因数据库文件已存在而重新创建。
3. 误删数据的回复操作
在企业级数据库管理中,操作失误时删掉了数据库的数据是经常发生的事情。但是如果提前通过备份管理好数据库,就可以使误删数据的后果大大减轻。如果没有做备份,那么只有尝试恢复操作了。
下面通过一个操作示例来实现恢复操作:
USE [test]
GO
EXEC sp_executesql N'begin tran'
GO
DELETE FROM [table1] where id = 13
GO
SELECT * FROM [table1]
GO
这里演示通过SQL执行删除操作后,误删了id为13的数据记录。下面就演示如何通过备份来恢复删掉的数据。
第一步,备份:按照上面介绍备份数据库的步骤,对数据库进行备份。这里只需要注意备份的路径即可。
第二步,恢复:如果执行了误删操作,就尝试终止此操作(未提交操作不受影响),接下来进行数据恢复操作。
USE [test]
GO
ALTER DATABASE [test] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE [test]
FROM DISK = N'C:\backup.bak'
WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 10
GO
重要提示: 这里RESTORE DATABASE指定的是需要还原的数据库名,即 test,FROM DISK指定的是需要还原的备份文件路径,这个路径需要您自己设置,上面backup.bak就是备份文件的路径。
执行完这个操作后,就可以在 try...catch 块中执行 commit 或者 rollback 命令来完成操作,这样就可以达到回复数据的目的了。
4. 总结
对于企业 SQL Server 的数据管理而言,还原数据库技术是个非常重要的技能。因为没有数据,企业追求高效,追求信息化的企图就分文不值。
还原数据库有很多技巧,本文只是介绍了基础操作。遇到实际应用问题需要考虑其中的细节来实现。但无论如何,备份数据库都是一个最基本和最重要的要求。