欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

SQLServer日志文件清除方法

程序员文章站 2024-01-31 21:43:46
...

近日,因发现某系统SQLServer数据库的日志文件较大,需要对其进行清理。本来以为是个很简单的事情,SQL Server Management Studio中有现成的菜单功能,点两下鼠标就行了。但在实际操作中却发现不起作用。因为涉及到数据,担心误操作导致不可挽回的损失,所以

近日,因发现某系统SQLServer数据库的日志文件较大,需要对其进行清理。本来以为是个很简单的事情,SQL Server Management Studio中有现成的菜单功能,点两下鼠标就行了。但在实际操作中却发现不起作用。因为涉及到数据,担心误操作导致不可挽回的损失,所以还是上网研究了一下,并单独测试没问题后,才敢对实际数据库下手。

具体的操作过程应该是这样的:

一、挑一个夜深人静的时候,先备份一下数据库。

夜深人静之时,系统一般会比较空闲,可能从容地下手,有数据库备份,万一第二天早上发现有问题,至少可以恢复到昨天的工作点,风险比较小。

二、打开SQL Server Management Studio(SSMS),打开查询页面,执行以下SQL语句:

DUMP TRANSACTION [数据库名] WITH   NO_LOG

该语句的作用是清空指定数据库的日志。

三、在SSMS中相应数据库名称下点右键,菜单中选择“任务-收缩-文件”,在打开的“收缩文件”窗口中,文件类型选择“日志”,并选择相应的日志文件名(如果有多个可选的话),在“收缩操作”项下有3个可选项:

1、释放未使用的空间。

会把文件中未使用的空间释放给操作系统,将将文件收缩到最后分配的区。这个选项感觉作用不大,因为要考虑清理日志文件时,它已经是很大了,分配的空间当然也都是用掉的。

2、在释放未使用的空间前重新组织页,将文件收缩到(需设置文件大小);

这种方法等效于执行指定目标文件大小的:DBCC SHRINKFILE。必须在后面的文本框中输入日志文件的大小,可以为0。

3、通过将数据迁移到同一文件组中的其它文件来清空文件。

此方法相当于执行带EMPTYFILE选项的DBCC SHRINKFILE。

这里我选择使用了第2个选项。

当然,这里只是提供了一种可成功实现的实用方法。对于更复杂的应用场景,需要对DUMP TRANSACTION和DBCC SHRINKFILE有深入的了解,具体可以研究的微软的相关文档。