1.数据库--属性--选项--恢复模式:简单。
2.数据库--任务--文件类型:日志
在释放未使用的空间潜重新组织页:1M
3.数据库--属性--选项--恢复模式:完整。
方法一:
1、打开查询分析器,输入命令
BACKUP LOG database_name WITH NO_LOG
2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。
方法二:(本人尝试 非常有效)
设置检查点,自动截断日志
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定。
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据。
方法三:删除日志文件
此方法有一定的风险性,因为sql server的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1、操作前请断开所有数据库连接。
2、分离数据库
分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库
分离后,cwbase1数据库被删除,但保留了数据文件和日志文件。
3、删除log物理文件
删除LOG物理文件,然后附加数据库: 企业管理器->服务器->数据库->右键->附加数据库。
此法生成新的log,大小只有500多k。
注意:
宵云建议使用第一种方法。操作前请确保所有操作员都已经推出系统,断开数据库的连接。
以上操作前,请务必做好数据备份!
1.sql server 2005 清除日志语句:
dump transaction 数据库名称 with no_log
backup log 数据库名称 with no_log
dbcc shrinkdatabase(数据库名称)
2.sql server 2008 清除日志语句:
sp_dboption 数据库名称, "trunc. log on chkpt.", true
checkpoint
sp_dboption 数据库名称, "autoshrink", true
1.数据库--属性--选项--恢复模式:简单。
2.数据库--任务--文件类型:日志
在释放未使用的空间潜重新组织页:1M
3.数据库--属性--选项--恢复模式:完整。
转载于:https://www.cnblogs.com/meitai/p/10735539.html
sqlserver 事务日志已满解决方案
sqlserver 事务日志已满解决方案
可参考这篇博客:
https://www.cnblogs.com/strayromeo/p/6961758.html
一.删除日志文件:(不建议)
二.手动收缩:
1.数据库右键属性-选项-恢复模式-下拉选择简单-最后点击确定
2.右键数据库-任务-收缩-文件类型-下拉选择日志-收缩操作-在释放未使用....(默认收缩到1MB)-最后点击确定
3.最后别忘了回到第一步骤把恢复模式改为完整!
三.自动收缩:
1.为了以后能自动收缩,做如下设置:
企业管理器–服务器–右键数据库–属性–选项–选择”自动收缩”
QL语句设置方式:
EXEC sp_dboption ‘数据库名’, ‘autoshrink’, ‘TRUE’
2..如果想以后不让它日志增长得太大
企业管理器–服务器–右键数据库–属性–事务日志
–将文件增长限制为xM(x是你允许的最大数据文件大小)
–SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
四.分离附加:
分离主数据库-删除.ldf文件-附件数据库;
五.使用sql语句:(可设置为计划)
--将数据库设为简单模式。日志文件自动断开。
alter database dbname set recovery simple
--查看日志文件状况
use dbname
dbcc shrinkfile('logname') --like XXXX_log--恢复数据库模式
alter database dbname set recovery full六.备份日志:
SQL Server 2008 先备份日志将日志截断.
再用dbcc shrinkfile(日志文件,1024)收缩日志文件。七.设置简单模式:
设置为简单模式不记录日志;
八.sql自动缩减日志:
针对日志这个问题,建议手动写个小工具(SQL提供自动缩减日志的脚本写法),添加到任务计划中,定时执行!可以节省很多磁盘空间!
sqlserver事务日志已满解决方法
一.删除日志文件:二.手动收缩:
1.数据库右键属性-选项-恢复模式-下拉选择简单-最后点击确定
2.右键数据库-任务-收缩-文件类型-下拉选择日志-收缩操作-在释放未使用…(默认收缩到1MB)-最后点击确定
3.回到第一步骤把恢复模式改为完整!三.自动收缩:
1.为了以后能自动收缩,做如下设置:
企业管理器–服务器–右键数据库–属性–选项–选择”自动收缩”
QL语句设置方式:EXEC sp_dboption ‘数据库名’, ‘autoshrink’, ‘TRUE’
2…如果想以后不让它日志增长得太大:
企业管理器–服务器–右键数据库–属性–事务日志
–将文件增长限制为xM(x是你允许的最大数据文件大小)
–SQL语句的设置方式:alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
四.分离附加:
分离主数据库-删除.ldf文件-附件数据库;五.使用sql语句:(可设置为计划)
–将数据库设为简单模式。日志文件自动断开。alter database dbname set recovery simple
–查看日志文件状况
use dbname dbcc shrinkfile('logname') --like XXXX_log
–恢复数据库模式
alter database dbname set recovery full
六.备份日志:
SQL Server 2008 先备份日志将日志截断.
再用dbcc shrinkfile(日志文件,1024)收缩日志文件。七.设置简单模式:
设置为简单模式不记录日志;
八.sql自动缩减日志:
针对日志这个问题,建议手动写个小工具(SQL提供自动缩减日志的脚本写法),添加到任务计划中,定时执行!可以节省很多磁盘空间!