首页 > 代码库 > (转) SQL Server中 ldf 文件过大的解决方法
(转) SQL Server中 ldf 文件过大的解决方法
在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:
- 第一步:清空日志
DUMP TRANSACTION
databasename
WITH
NO_LOG
-- 第二步:截断事务日志
BACKUP LOG
databasename
WITH
NO_LOG
-- 第三步:收缩数据库
DBCC SHRINKDATABASE(databasename)
需要说明几点:
1. 上面的SQL命令需要按照顺序执行;
2. 执行上面的命令通常比直接使用右键菜单中的“收缩”命令要快很多
参考资料:
SQL SERVER 数据库日志已满,如何收缩数据库日志
http://blog.csdn.net/faintbear/archive/2005/02/06/283316.aspx
如何收缩数据库日志
http://www.cndiy8.com/data/web5701/20050228/20050228__3794589.html
---------------------------------------------------------------------------------------
还一个比较简单的方法:先把数据分离,然后删除.ldf的文件,重新附加数据库 MDF文件.会提示找不到.ldf文件。直接删除即可,如下图
删除后,点击确定,数据库被附加上。新生成的ldf文件只有504 KB
1、分离数据库后 到目录下删除.ldf文件后 到sql server中附加数据库 (会提示找不到ldf文件,不用管,直接删除就可以了) 附加成功后 ,ldf文件 504K 经确认可行,并且对网站的内容没有影响。。。。呵呵 2、用sql语句收缩事务日志文件 不过我还没有成功过 步骤操作:1. 备份事务日志文件,以使大多数活动虚拟日志文件处于非活动状态。因此,可在以后的步骤中删除非活动的虚拟日志文件。为此,请运行与以下 Transact-SQL 语句相似的 Transact-SQL 语句。BACKUP LOG <DatabaseName> TO DISK = ‘<BackupFile>‘ 注意:在此语句中,<DatabaseName> 是要备份的数据库名称的占位符。在此语句中,<BackupFile> 是备份文件完整路径的占位符。 例如,运行以下 Transact-SQL 语句。BACKUP LOG TestDB TO DISK=‘C:\TestDB1.bak‘ 2. 收缩事务日志文件。为此,请运行与以下 Transact-SQL 语句相似的 Transact-SQL 语句。DBCC SHRINKFILE (<FileName>, <TargetSize>