SQL Server事务日志主要是用来记录所有事务对数据库所做的修改如果系统出现故障它将成为最新数据的唯一来源日志的操作常有以下几个应用
一事务日志文件LDF的丢失
当我们不小删除或者LDF文件丢失的时候数据库只剩下MDF文件此时直接通过附加MDF是无法恢复数据库的那我们怎么样才能恢复数据库呢?我们可以把SQL Server的日志文件分为两种形式一类是无活动事务的日志另一类是有活动事务的日志我们分别根据两种情况来进行数据库恢复
无活动事务的日志恢复
当文件并没有发生活动性的日志我们就可以很容易的利用MDF文件就可以直接恢复数据库了具体操作方法如下
()数据库要是没有日志就会处于置疑的状态我们先可以通过企业管理器中在对应数据库中点击右键然后在所有任务下选择分离数据库把数据库进行分离
()利用MDF文件附加数据库生成新的日志文件可用企业管理器中数据库点击右键选择所有任务下的附加数据库把数据库附加上
这样就可以直接恢复好数据库了而如果数据库的日志文件中含有活动事务利用此方法就不能恢复数据库所以得使用下面的方法
有活动事务的日志恢复
当日志发生了事务的记录丢失的时候我们采用如下的方法来实现
()新建一个同名的数据库如原数据库名为MYDB然后停止SQL Server服务器再把数据库主数据MDF文件移走然后重新启动SQL Server服务器新建一个同名的数据库MYDB然后再停止SQL Server服务器把移走的MDF文件再覆盖回来然后再重新启动SQL Server服务器在默认的情况下系统表是不允许被修改的我们需要运行以下语句才可以在查询分析器中选择Master数据库然后执行
Sp_configure allow updates
Reconfigure With Override
接着运行以下语句把Sysdatabases表中MYDB数据库的status属性设为把MYDB数据库设置为紧急模式
update sysdatabases set status= where name=MYDB
然后再把数据库MYDB设置为单用户模式然后重启SQL Server服务器并把数据库MYDB设为单用户模式:
Sp_dboption MYDBsingle user true
再运行以下语句检查数据库MYDB:
DBCC CHECKDB(MYDB)
()还原数据库的状态
运行以下语句就可以把数据库的状态还原
Update Sysdatabases Set status= Where name=MYDB
Sp_Configure allow updates
Reconfigure With Override
此时的数据库仍不能工作还要进行以下的操作才能恢复
()利用DTS的导入导出向导把数据库MYDB导入到一个新建数据库MYDBNEW中然后新建一个数据库MYDBNEW右击MYDBNEW选择所有任务下的导出数据功能打开导入向导把表结构数据视图和存储过程导入到MYDBNEW中然后再用此功能把MYDBNEW库替换成原来的MYDB库即可可以知道恢复一个有活动事务的日志是麻烦多了所以在数据库维护的时候切不要小看事务日志
[] []