现在的位置: 首页 > 综合 > 正文

日志文件满而造成SQL数据库无法写入文件处理方法

2012年02月12日 ⁄ 综合 ⁄ 共 1504字 ⁄ 字号 评论关闭

今天真的好郁闷啊,怎么都不能修改,自己看了看源文件没有错误,数据库连接字符串也没有错误,这到底是怎么回事呢?正在发牢骚,郁闷中,我不由的点开了数据库,就无精打采的点击着数据库中的某一张表,表里的某一列值,我不小心把值给修改了,但是我在关闭这张的同时提示我,数据库日志已满,我就在想这是什么原因呢,后来就带着这个问题找解决方法。功夫不负有心人,这个问题被我解决了。

 

原因:数据库日志文件已满而造成sql数据库无法查看,修改,删除等操作。

 

解决方法有两种,一种是暂时的解决方法,另一种是永久的解决方法。

 

第一种:

打开数据库,给数据库日志更大的空间,这样才可以对数据库进行操作,包括查修删等操作。

 

第二种:

实现永久解决方法也有两种办法:

 

一种方法:清空日志。

1.打开查询分析器,输入命令
DUMP TRANSACTION 数据库名 WITH NO_LOG
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
解释:dump是清空日志,backup 是截断日志。

1.清空日志     dump transaction   库名 with     no_log

2.截断事物日志     backup LOG   库名   with    no_log

dump   transaction   库名  with   no_log   是sybase   的用法,SQL   server   的核心原来就是sybase的.  
  因此   sql   server   也能用   dump   transaction   .   back   log   库名   with   no_log   是  sql   server   的用法. 这两种都是截断日志的,都可以使用。

 

另一种方法(区分数据库版本)

 

这是sql2005

在使用此方法的时候,一定要先备份数据库文件,SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

1.删除日志

这里分两步完成:

(1)分离数据库

打开数据库,找到数据库名,右键点击任务菜单下的分离,出现分离数据库的一个窗口,在窗口的右侧要有几个选择框,要选择删除连接,在点击确定。分离数据库成功之后,在我的电脑里删除后缀为.log.ldf文件(C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/)。

(2)附件数据库

右键点击数据库,选择下拉菜单中的“附加”,弹出一个附加数据库窗口,在窗口中点击附加按钮,一般弹出来的窗口都是系统默认的路径,直接找到数据库名称,根据提示往下进行,在这里会提示你错误,因为之前把数据库日志给删除了找不到了,选中日志文件,点击右下角删除按钮,直接点击确定,提示附加数据库成功。

此时生成新的log,文件大小为500多KB。

 

这是sql2000

1: 删除LOG
分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:在我的电脑中删除log文件
3:删除LOG文件
附加数据库 企业管理器->服务器->数据库->右键->附加数据库

中间的操作和sql2005的相似。

上面这两种方法我使用的是第二种,数据库是使用的sql2005版本的,处理数据日志文件成功。对网站和数据库没有影响。我在本地测试成功了。

 

这个问题解决了,我突然感觉豁然开朗,感觉心情也好了很多。从这里我可以感觉出,遇到问题不要烦躁,要静下心来想想问题的所在,根源在哪里,在什么情况下会出现这样的问题,带着问题去思考,去寻找,成功定然会属于自己。

 

相信自己是最棒的,一分耕耘一分收获!!

 

 

 

 

抱歉!评论已关闭.