SQL 收缩数据库日志的几种办法 (2005与2008 略有区别)

简介:
+关注继续查看

在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL,

方法一:

---DBTEST 为数据库名,顺序最好别乱。注意要先截断再清空,最后收缩!

backup log DBTEST with no_log  --截断事务日志

dump transaction DBTEST with no_log  --清空日志

DBCC shrinkdatabasse ('DBTEST',TRUNCATEONLY) 收缩数据库和日志库


 另有只收缩日志文件,语句如下 

DBCC shrinkfile ('DBTEST_Log',1)--收缩日志文件 

DBCC shrinkfile (N'DBTEST_Log' , 0, TRUNCATEONLY) --收缩日志文件


执行以上语句可以快速压缩日志文件到1M。

但是以上语句中前两行在SQL Server 2008下无法执行 ,

第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.”

第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ”

第三行可以执行。但日志log文件没有任何变化。

原来SQL Server 2008 已经不再支持 DUMP TRANSACTIONBACKUP LOG WITH NO_LOG详情请看
http://msdn.microsoft.com/zh-cn/library/ms187315%28SQL.90%29.aspx
http://msdn.microsoft.com/zh-cn/library/ms186865.aspx 

sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。

SQL Server 2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。

尝试方法二:  

----Logical Files :
--
CMS1.5_Data
--
CMS1.5_Log
DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
GO

无效。

 

尝试方法三:  

代码

use DB_NAME
sp_dboption 
DB_NAME, "trunc. log on chkpt.", true
checkpoint
sp_dboption 
DB_NAME, "autoshrink", true 

每一行指令请单独执行。其中的DB_NAME是指Database Name,在执行完语法后的数小时至数十小时,该LOG档会逐渐释放空间,最后大约都会维持在数1024KB左右

有没有更快的方法呢?

尝试方法四:(请提前备份文件!!)

1. Detach数据库。
2.删除log文件。
3. 附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。

附图:




方法五(没有试过,请提前备份文件!!):

 
1. 停止 SQL Server 的服务
 
2. 使用删除 Log文件
 
3. 重新启动SQL Server 服务,此时SQL Server 会自动重新建立一个1MB 的Log 文件。
方法六: (尘尘提供)

先设置恢复模式为“简单恢复”模式,再收缩:

USE BigData ;
GO
ALTER DATABASE BigData
SET RECOVERY SIMPLE;--设置简单恢复模式
GO
DBCC SHRINKFILE (BigData_Log, 1);
GO
ALTER DATABASE BigData
SET RECOVERY FULL;--恢复为原模式
GO 

 方法七: (尘尘提供)

 

USE BigData;
GO
BACKUP LOG DATABASENAME TO DISK='d:\test.bak'
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (Bigdata_Log, 1);
GO

文章出自

http://www.cnblogs.com/downmoon/archive/2009/12/13/1623004.html。















本文转自easy80851CTO博客,原文链接:http://blog.51cto.com/68240021/1978430 ,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
数据库基本概念(SQL,索引,视图,事务,日志等)(二)
数据库基本概念(SQL,索引,视图,事务,日志等)(二)
131 0
|
10天前
|
SQL 关系型数据库 MySQL
数据库基本概念(SQL,索引,视图,事务,日志等)(一)
数据库基本概念(SQL,索引,视图,事务,日志等)(一)
160 0
|
1月前
|
SQL 前端开发
Springboot+JPA打印SQL日志
Springboot+JPA打印SQL日志
|
2月前
|
SQL 数据库
SQL中字段跟子查询结果判等,子查询结果为null的处理办法
前言:今天写功能的时候遇到一个问题,SQL中字段跟子查询结果判等,子查询结果为null,查询不到数据
|
4月前
|
SQL 弹性计算 Kubernetes
实践教程之采集PolarDB-X SQL日志到ElasticSearch
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何采集PolarDB-X SQL日志到ElasticSearch。
|
6月前
|
SQL 存储 关系型数据库
MySQL的Binlog日志和Relay Log日志存储的SQL都是一样的吗?底层原理是什么?
MySQL的Binlog日志和Relay Log日志存储的SQL都是一样的吗?底层原理是什么?
244 0
Zp
|
6月前
|
SQL Oracle 关系型数据库
Oracle sql使用sys_guid() 生成32位id乱码解决办法
Oracle sql使用sys_guid() 生成32位id乱码解决办法
Zp
879 0
Oracle sql使用sys_guid() 生成32位id乱码解决办法
|
6月前
|
SQL 存储 JSON
没有索引也能用SQL ?深度解析 SLS Schema-on-Read 分析原理与应用
为了能够更灵活的挖掘日志数据背后的价值,SLS提出了一种不需要事先建立索引就能对数据进行分析的模式。本文对SLS Schema-on-Read分析的提出背景、设计思路、实现过程、使用方式、适用场景进行了全面的介绍。
15049 0
没有索引也能用SQL ?深度解析 SLS  Schema-on-Read 分析原理与应用
|
7月前
|
SQL 关系型数据库 MySQL
MySQL慢查询日志:如何定位执行慢的sql语句
MySQL慢查询日志:如何定位执行慢的sql语句
268 0
MySQL慢查询日志:如何定位执行慢的sql语句
|
8月前
|
SQL 存储 监控
Mysql中 慢查询日志和show profile进行sql分析
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
268 0
推荐文章
更多