网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > MSsql > SQL Server事务日志的几个常用操作  

SQL Server事务日志的几个常用操作

2008-05-08  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

   我们知道,SQL Server事务日志主要是用来记录所有事务对数据库所做的修改,如果系统出现故障,它将成为最新数据的唯一来源。日志的操作常有以下几个应用: 网管u家u.bitsCN.com

  一、事务日志文件LDF的丢失 中国网管论坛bbs.bitsCN.com

  当我们不小删除或者LDF文件丢失的时候,数据库只剩下MDF文件,此时直接通过附加MDF是无法恢复数据库的,那我们怎么样才能恢复数据库呢?我们可以把SQL Server的日志文件分为两种形式:一类是无活动事务的日志,另一类是有活动事务的日志,我们分别根据两种情况来进行数据库恢复。 网管论坛bbs_bitsCN_com

  1、无活动事务的日志恢复 网管联盟bitsCN@com

  当文件并没有发生活动性的日志,我们就可以很容易的利用MDF文件就可以直接恢复数据库了,具体操作方法如下: 网管下载dl.bitscn.com

  1)数据库要是没有日志,就会处于置疑的状态,我们先可以通过企业管理器中在对应数据库中点击右键,然后在“所有任务”下选择“分离数据库”把数据库进行分离; 网管u家u.bitscn@com

  2)利用MDF文件附加数据库生成新的日志文件,可用企业管理器中数据库点击右键选择“所有任务”下的“附加数据库”把数据库附加上。 网管联盟bitsCN@com

  这样就可以直接恢复好数据库了,而如果数据库的日志文件中含有活动事务,利用此方法就不能恢复数据库,所以得使用下面的方法。

中国网管联盟bitsCN.com

  2、有活动事务的日志恢复 网管联盟bitsCN_com

  当日志发生了事务的记录,丢失的时候,我们采用如下的方法来实现: 中国网管联盟bitsCN.com

  1)新建一个同名的数据库,如原数据库名为MYDB,然后停止SQL Server服务器,再把数据库主数据MDF文件移走,然后重新启动SQL Server服务器,新建一个同名的数据库MYDB,然后再停止SQL Server服务器,把移走的MDF文件再覆盖回来,然后再重新启动SQL Server服务器,在默认的情况下,系统表是不允许被修改的,我们需要运行以下语句才可以,在查询分析器中,选择Master数据库,然后执行:

网管联盟bitsCN_com

  Sp_configure 'allow updates',1 网管网www_bitscn_com

  Reconfigure With Override 网管u家u.bitsCN.com

  接着运行以下语句,把Sysdatabases表中MYDB数据库的status属性设为‘37268’,把MYDB数据库设置为紧急模式。 网管联盟bitsCN_com

  update sysdatabases set status=32768 where name=’MYDB’

网管联盟bitsCN_com

  然后再把数据库MYDB设置为单用户模式,然后重启SQL Server服务器,并把数据库MYDB设为单用户模式 网管下载dl.bitscn.com

  Sp_dboption 'MYDB','single user', 'true' 网管下载dl.bitscn.com

  再运行以下语句,检查数据库MYDB 网管下载dl.bitscn.com

  DBCC CHECKDB(‘MYDB’)

中国网管联盟bitsCN.com

    2)还原数据库的状态

网管联盟bitsCN@com

  运行以下语句,就可以把数据库的状态还原:

网管u家u.bitscn@com

  Update Sysdatabases Set status=28 Where name=’MYDB’ 网管网www.bitscn.com

  Sp_Configure ’allow updates’,0

网管论坛bbs_bitsCN_com

  Reconfigure With Override 网管论坛bbs_bitsCN_com

  此时的数据库仍不能工作,还要进行以下的操作,才能恢复。 网管联盟bitsCN_com

  3)利用DTS的导入导出向导,把数据库MYDB导入到一个新建数据库MYDBNEW中,然后新建一个数据库MYDBNEW,右击MYDBNEW,选择“所有任务”下的“导出数据”功能,打开导入向导,把表结构、数据视图和存储过程导入到MYDBNEW中,然后再用此功能把MYDBNEW库替换成原来的MYDB库即可。 中国网管论坛bbs.bitsCN.com

  可以知道,恢复一个有活动事务的日志是麻烦多了,所以在数据库维护的时候,切不要小看事务日志。

网管联盟bitsCN_com

中国网管联盟bitsCN.com


TAGs
 上一篇:SQL Server 2008数据库TDE压缩加密篇   下一篇:在PL/SQL应用程序中缓存图片
SQL Server事务日志的几个常用操作 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: