解析SQLServer事务日志压缩与删除的方法

转载 2007年10月01日 17:30:00

 

解析SQLServer事务日志压缩与删除的方法

问:SQLServer中的事务日志应该怎样压缩和删除?

答:具体方法有3种。

方法一:

 

第一步:

 

backup log database_name with no_log
或者 backup log database_name with truncate_only

 

-- no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。

 

第二步:

1.收缩特定数据库的所有数据和日志文件,执行:

 

dbcc shrinkdatabase (database_name,[,target_percent])

 

-- database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。

 

2.收缩一次一个特定数据库中的数据或日志文件,执行

 

dbcc shrinkfile(file_id,[,target_size])

 

-- file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.

 

方法二:

 

第一步:

先备份整个数据库以备不测 。

 

第二步:

备份结束后,在Query Analyzer中执行如下的语句:

 

exec sp_detach_db yourDBName,true

 

--卸除这个DB在MSSQL中的注册信息

 

第三步:

到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录

 

第四步:

在Query Analyzer中执行如下的语句:

 

exec sp_attach_single_file_db yourDBName,'
d:/mssql/data/yourDBName_data.mdf '

 

--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。

 

方法三:

 

1. 进入企业管理器,选中数据库,比如demo

 

2. 所有任务->分离数据库

 

3. 到数据库文件的存放目录,将MuOnline_log.LDF文件删除,以防万一,你可以拷出去

 

4. 企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。

 

5. 记得数据库重新附加后用户要重新设置一下。

 

如果以后,不想要它变大:

 

SQL2000下使用:

 

在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

 

或用SQL语句:

 

alter database 数据库名 set recovery simple
 

相关文章推荐

SQL2005中查看事务日志方法-MS-SQLServer

DBCC log ( {dbid |dbname}, [, type={0 |1 |2 |3 |4}] )    参数: Dbid or dbname - 任一数据库的ID或名字    typ...

SQLServer事务同步下如何收缩日志

事务同步是SQLServer做读写分离的一种常用的方式。 随着业务数据的不断增长,数据库积攒了大量的日志,为了腾出硬盘空间,需要对数据库日志进行清理订阅数据库的日志清理因为订阅数据库所有的数据都来自...

sqlserver2008 R2 数据库事务日志已满

报错:数据库 .... 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的   log_reuse_wait_desc 列   处理办法: ...

DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SQLPERF提供所有数据库的事务日志空间使用情况统计信息

提供所有数据库的事务日志空间使用情况统计信息。也可以用于重置等待和闩锁的统计信息。  Transact-SQL 语法约定 语法 DBCC SQLPERF ...

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 数据库 'BHIoTV1.1' 的事务日志已满。若要查明无法重用日志中的空间的原

> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 数据库 'BHIoTV1.1' 的事务日志已满。若要查明无法重用日志中的空间...

SqlServer事务语法及使用方法

事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。...

SqlServer 并发事务:死锁跟踪(三)6种跟踪死锁的方法总结

方法一:打开profiler跟踪事件 locks: deadlock graph 方法二:打开1222或者1204标志记录死锁,在sqlserver日志查看 DBCC TRACEON...

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

转自http://blog.csdn.net/dba_huangzj/article/details/8491327 原文出处:http://blog.csdn.net/dba_huangz...

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

问题:          经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现...
  • tyczp
  • tyczp
  • 2017年05月06日 12:32
  • 205
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解析SQLServer事务日志压缩与删除的方法
举报原因:
原因补充:

(最多只允许输入30个字)