SQLServer收缩事务日志.docx
《SQLServer收缩事务日志.docx》由会员分享,可在线阅读,更多相关《SQLServer收缩事务日志.docx(10页珍藏版)》请在冰豆网上搜索。
SQLServer收缩事务日志
收缩事务日志--压缩事务日志。
删除日志日志—将原来过大的事务日志保存后将其分离删除,新的事务日志创建后其大小为50KB左边。
方法一、收缩数据库事务日志(T-SQL语句操作)
1.更改数据库恢复模式的命令如下(通常情况下,日志没有被收缩都是因为日志文件未被截断造成的。
还有一个办法是把将数据库恢复模式设置为“SIMPLE”模式后再次)如图1
ALTERDATABASE数据库名SETRECOVERYFULL;--更改为完全模式
ALTERDATABASE数据库名SETRECOVERYbulk_logged;--更改为大容量日志模式
ALTERDATABASE数据库名SETRECOVERYsimple;--更改为简单模式
执行效果如图所示
注意事项:
如果更改为简单模式,那以后将无需事物日志备份,但是一定要确保的定期执行数据库备份来确保数据的完整性。
如果更改为完整模式或者大容量日志模式,那一定首先进行一次完整的数据库备份以启动日志链,并且设置任务计划来定期的日志备份
在事物日志进行截断之后,那我们就可以把日志文件进行收缩
可以使用DBCCSHRINKFILE使用命令进行收缩
下图是把以下示例将test用户数据库中名为test_log的数据文件的大小收缩到10MB。
执行完命令后查看日志文件是否缩小,日志文件收缩后不会比虚拟日志文件小
收缩数据库命令
●也可以用SQL语句来完成
●----alterdatabaseAdeventureWroks2012setrecoverysimple; (simple简单模式,full完整模式,bulk_logged大容量日志)
●--收缩数据库
DBCCSHRINKDATABASE(库名)
●DBCCShrinkdatabase('AdeventureWroks2012',10)收缩AdeventureWroks2012数据库,保留百分之10%的空闲空间
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:
select*fromsysfiles
DBCCSHRINKFILE
(1)
方法一、收缩数据库事务日志
1.登陆项目平台数据库服务器。
双击SQL Server Management Studio打开数据库管理。
2.更改数据库恢复模式
3.收缩数据库日志
4.修改完收缩日志后,将数据库恢复模式改为完整
方法二:
分离删除ldf,让它自动创建个新的事务日志文件
1. 进入企业管理器,选中数据库,比如arsystem
2. 所有任务->分离数据库
3. 到数据库文件的存放目录,将爱人沈阳市特命ARSystem_log.LDF文件删除,以防万一,你可以拷出去,或者是给它改名
4. 企业管理器->附加数据库,选arsystem.mdf,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
5. 记得数据库重新附加后用户要重新设置一下。
分离数据库语句
Sp_detach_db'ARsystem'
附加数据库语句
USEmaster
Go
Createdatabasearsystemon
(filename='E:
\ProgramFile\MicorosoftSQLServer\MSSQL11.SQLA\MSSQL\DATA\ARSystem.mdf')
(filename='E:
\ProgramFile\MicorosoftSQLServer\MSSQL11.SQLA\MSSQL\DATA\ARSystem_ldf.ldf')
Forattach
Go
释放数据库硬盘空间(那个LDF文件超大,怎么办?
)
最简单的方法,卸离数据库-->删除ldf文件-->附加数据库-->自动重新产生一个ldf文件.
事务日志的优点和缺点
优点:
此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内
即可完成。
缺点:
不过此动作最好不要经常使用,因为它的运行会带来系统碎片。
普通状态下LOG和DIFF的备份即可截断日志。
此语句使用的恰当环境:
当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。