解决SQL数据库日志已满的问题

1、简单方法

一、右键数据库→属性→选项→故障还原模型→设为简单→肯定;
二、右键数据库→全部任务→收缩数据库→肯定;
三、右键数据库→属性→选项→故障还原模型→设为大容量日志记录→肯定。
2010。09。24 我就是用的第一种简单方法,来给公司数据库日志减肥!

2、复杂方法

一、清空日志
DUMP TRANSACTION 库名 WITH NO_LOG

二、截断事务日志
BACKUP LOG 数据库名 WITH NO_LOG
三、收缩数据库文件(若是不压缩,数据库的文件不会减少)
企业管理器--右键你要压缩的数据库--全部任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个容许收缩到的最小M数,直接输入这个数,肯定就能够了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个容许收缩到的最小M数,直接输入这个数,肯定就能够了

也能够用SQL语句来完成

--收缩数据库
DBCC SHRINKDATABASE(客户资料)
--收缩指定数据文件,1是文件号,能够经过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1)

四、为了最大化的缩小日志文件(若是是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库
企业管理器--服务器--数据库--右键--分离数据库
b.在个人电脑中删除LOG文件
c.附加数据库
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K

或用代码:
下面的示例分离 pubs,而后将 pubs 中的一个文件附加到当前服务器。
a.分离
EXEC sp_detach_db @dbname = 'pubs'
b.删除日志文件
c.再附加
EXEC sp_attach_single_file_db @dbname = 'pubs',@physname = 'c:\Program Files\Microsoft SQL

Server\MSSQL\Data\pubs.mdf'
五、为了之后能自动收缩,作以下设置
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
--SQL语句设置方式:
EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE'
六、若是想之后不让它日志增加得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增加限制为xM(x是你容许的最大数据文件大小)
--SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

特别注意:

请按步骤进行,未进行前面的步骤,请不要作后面的步骤,不然可能损坏你的数据库。
通常不建议作第四、6两步,第4步不安全,有可能损坏数据库或丢失数据,第6步若是日志达到上限,则之后的数据

库处理会失败,在清理日志后才能恢复。

----------------------------------------------------------------------------------------------------------------------------------- 日志文件满而形成SQL数据库没法写入文件时,可用两种方法: 一种方法:清空日志。 1.打开查询分析器,输入命令 DUMP TRANSACTION 数据库名 WITH NO_LOG 2.再打开企业管理器--右键你要压缩的数据库--全部任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个容许收缩到的最小M数,直接输入这个数,肯定就能够了。 另外一种方法有必定的风险性,由于SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会形成数据的损失。 1: 删除LOG 分离数据库 企业管理器->服务器->数据库->右键->分离数据库 2:删除LOG文件 附加数据库 企业管理器->服务器->数据库->右键->附加数据库 此法生成新的LOG,大小只有500多K。 注意:建议使用第一种方法。 若是之后,不想要它变大。 SQL2000下使用: 在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。 或用SQL语句: alter database 数据库名 set recovery simple
相关文章
相关标签/搜索