1、前言
数据对于每一家公司来说都是非常珍贵的资产,尤其是表中存放的数据更是公司重要的资料。一旦误删了某张表格,会给公司带来不可估量的损失,专业数据恢复手段成本昂贵,时间也不能保证。而作为一名数据库管理员(DBA),他必须经常面对表格误删的风险。针对于SQL Server表格误删的情况,本文将提供一些有用的恢复方法,以及一些预防措施供大家参考,希望能在事故发生时有所帮助。
2、SQL Server表格误删的情况
SQL Server 表格误删分多种情况,其中比较常见的是人为操作失误造成的误删,如一些大型网站处理日志文件时,错误地将日志库文件删除,而日志文件正是运维人员很重要的工具。此外,由于病毒、意外断电等原因也可能出现误删情况。
2.1 误删数据的几种方式
每种情况在实现上是不同的,所以下面要具体说明各种情况的实现方式及解决方法。
2.2 具体的操作方式
在 SQL Server 中,误删通常分为两种,一种是误删单张表格,另一种是误删整个数据库。下面我们将具体说明各种情况的实现方式及解决方法。
3、误删单张表格的处理方法
误删单张表格是相对比较容易处理的事情,我们可以通过备份数据库的方式进行恢复。我们只需要将数据从上一次备份的数据库中还原到丢失的数据库中就可以了。
3.1 数据库备份
这个方法需要我们及时备份数据库,在发生数据丢失的时候最好是选择离最近备份时间最近的数据库进行恢复。
BACKUP DATABASE [DatabaseName]
TO DISK = 'D:\Backup\DatabaseName.bak'
GO
该方法需要管理员在每次更改数据库的时候手动备份,而且还需要改变数据库的链接信息。
3.2 恢复数据库
如果在数据库中误删了某些表格,我们完全可以通过恢复整个数据库的方式来解决。恢复数据库的操作需要管理员有足够的权限,下面我们来看一下具体恢复操作。
RESTORE DATABASE [DatabaseName]
FROM DISK = 'D:\Backup\DatabaseName.bak'
4、误删整个数据库的处理方法
误删整个数据库相对来说比较麻烦,仅有的恢复方式是从冷备份或者热备份文件中进行恢复。即从文本备份、差异文件或者日志文件进行恢复的最好方法是使用 SQL Server Management Studio 的 Restore 功能。但是我们也可以借助第三方恢复工具来恢复误删的数据。
4.1 从备份点恢复数据库
如果是单张表格误删可以用此法,选择其上一次的备份,将其中备份的表数据恢复到丢失的数据库中。
USE [master]
GO
RESTORE DATABASE [DatabaseName]
FROM DISK = 'D:\Backup\DatabaseName.bak'
WITH REPLACE, NORECOVERY
GO
RESTORE LOG [DatabaseName]
FROM DISK = 'D:\Backup\DatabaseName.trn'
WITH NORECOVERY
GO
4.2 使用恢复工具
如果从备份点恢复失败,可以尝试使用一些第三方恢复工具如Red Gate SQL Tool Belt或者DBRecovery。但是需要注意的是,这些工具成本比较高,并且恢复的成功率并不保证。
5、误删预防措施
对于误删带来的损失,最好的处理方法还是在于预防,可能用钱买回数据,却很难挽回损失带来的影响。因此,我们必须采取一系列有效的预防措施来降低SQL Server误删数据的风险。
5.1 用户权限分级
管理员应该给不同的用户分配不同的权限,防止误操作导致的误删。例如,应该对管理员设置有增、删、改表的操作权限,普通员工则只有读取的权限。
5.2 定时备份
避免所谓的“所有的蛋放到同一个篮子”。数据库管理员应定期对数据库进行热备份,并且要将其备份到不同的库。同时,还要定期的对磁盘进行备份,可以备份一段时间内的日志文件,这样可以恢复错误的操作,还可以保障故障后的数据安全。
5.3 监测数据库异常行为
管理员应当对数据库进行监测,建立相应的日志文件,可以查看数据库登录和退出信息,如果发现有异常行为需要及时进行硬盘基准化或格式化操作,以维护数据库的完整性。
5.4 自动备份
可以设置服务器定期对数据进行自动备份,以降低误操作带来的恶劣影响。
6、总结
单个表格的误删比数据库的误删有更高的恢复成功率,所以我们在日常给表格进行审查时,可以选择先备份数据,再进行操作,避免操作失误带来的损失。此外,定期对数据库进行备份,监测数据库异常行为,分级用户权限,自动备份等多种措施来降低SQL Server误删数据的风险。