(转) SQL Server中 ldf 文件过大的解决方法

原文地址:http://blog.itpub.net/35489/viewspace-616459/

在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>

 

posted @ 2014-06-27 14:47  高山-景行  阅读(13660)  评论(0编辑  收藏  举报