sql server日志占用空间过大的问题清理日志文件
一、关于日志的基本知识:
在 SQL Server 2000 和 SQL Server 2005 中,每个数据库都至少包含一个数据文件和一个事务日志文件。SQL Server 在该数据文件中以物理方式存储数据。事务日志文件存储您对 SQL Server 数据库执行的所有修改的详细信息,以及执行每个修改的事务的详细信息。由于事务完整性被视为 SQL Server 的一个基本而固有的特点,因此不能在 SQL Server 中关闭对事务详细信息的记录。
(是不是说,日志是不可以被关闭的?证明一下:)
可以尝试一下,将日志自动增长关闭。然后执行一下操作:
1、修改现有表部分记录。 结果:可以修改,这个没问题,说明还有可用日志空间;
2、导入大批量数据。 结果:导入失败,错误信息如下:
“正在复制到 [temp].[dbo].[车次到站时间_20090107] (错误)
数据流任务: 数据插入操作的最终提交已开始。(SQL Server 导入和导出向导)错误 0xc0202009: 数据流任务: 出现 OLE DB 错误。错误代码: 0x80004005。已获得 OLE DB 记录。源:“Microsoft SQL Native Client” Hresult: 0x80004005 说明:“数据库 ‘temp’ 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。”。
信息 0x402090e0: 数据流任务: 数据插入操作的最终提交已结束。
错误 0xc0047022: 数据流任务: 组件“目标 - 车次到站时间_20090107”(73)的 ProcessInput 方法失败,错误代码为 0xC0202009。标识的这个组件从 ProcessInput 方法返回了一个错误。虽然该错误是此组件特有的,但却是致命的,将导致数据流任务停止运行。
错误 0xc0047021: 数据流任务: 线程“WorkThread0”已退出,错误代码为 0xC0202009。”
可以看出,数据导入操作实际上是做为一个事务来执行的。但是由于日志空间不够,所以无法存储提交操作,所以执行失败。
另外,如果日志空间关闭,你会发现数据导入速度超快。
以上从2可以看出,日志是不能够被关闭的,如果关闭,会导致数据库操作失败。如果日志关闭以后仍旧能操作,这种情况是可能的,应该仅限于小量数据操作。
二、当生成新表后,数据库会分配新的空间。此时如果删除该表,发现数据库空间没有立即被释放出来。这是为什么呢?
sql server既然已经为数据库分配了空间,即使你现在删除了一个表,并不会立即释放空间的。但是如果接着导入新的数据,发现新的数据并没有分配新的空间,而是利用上一次删除留下的空间。想想这么做有什么好处呢?(防止碎片过多?防止重复申请?)
当然如果删除表以后,希望立即释放空间,可以收缩数据库。
三、收缩数据库和收缩文件的区别:
收缩数据库,是收缩所有文件;收缩文件,则可以选择收缩哪个文件(数据文件 or 日志文件)
四、当日志文件过大时,如果删除或减少日志所占空间。
方法1、当然收缩日志是一个方法。但是往往释放的空间有限。
方法2、
(1).清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
(2).截断事务日志:
BACKUP LOG 库名 WITH NO_LOG
(3).收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件
–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
–选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
–收缩数据库
DBCC SHRINKDATABASE(库名)
–收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)
方法3、a.分离数据库:
企业管理器–服务器–数据库–右键–分离数据库
b.在我的电脑中删除LOG文件
c.附加数据库:
企业管理器–服务器–数据库–右键–附加数据库
转载于:https://www.cnblogs.com/peijihui/archive/2009/11/20/1606855.html
sql server日志占用空间过大的问题清理日志文件相关推荐
- SQL Server实例的十大安全注意事项
SQL Server is one of the world's leading data platforms. It is being broadly used hosting millions o ...
- 一张图解释SQL Server集群、镜像、复制、日志传送
一张图解释SQL Server集群.镜像.复制.日志传送 本文版权归作者所有,未经作者同意不得转载.
- mdf ldf 转mysql_如何將sql server 的.mdf和.ldf 數據備份文件導入到mysql數據庫中?
示例 下面的示例將 pubs 中的兩個文件附加到當前服務器. EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\ ...
- sql server日志占用空间过大的问题
一.关于日志的基本知识: 在 SQL Server 2000 和 SQL Server 2005 中,每个数据库都至少包含一个数据文件和一个事务日志文件.SQL Server 在该数据文件中以 ...
- 保护SQL Server数据库的十大绝招
1. 安装最新的服务包 为了提高服务器安全性,最有效的一个方法就是升级到SQL Server 2000 Service Pack 3a (SP3a).另外,您还应该安装所有已发布的安全更新. 2. ...
- c语言 日志滚动 大小,Logrotate 日志滚动 解决日志占用空间过大
起因 前几天发现自己的博客没有办法登录了,每次输完密码登录完都会重新跳回登录界面.一开始是怀疑登录的session出了什么问题,因为浏览器开隐身模式后就能登录进去.然而开隐身模式进后台的时候又会出现4 ...
- SQL Server 数据库完整备份不只是备份数据还有日志
以前认为SQLServer完整备份只是备份数据库的数据而不包含日志,其实这是错误的.使用RESTOREHEADERONLY可以帮我们验证(msdb.dbo.backupset也包含相应的信息). RE ...
- SQL Server跟踪(Trace)--慢查询跟踪跟踪日志
前言 如果缺省跟踪信息打开,它将在SQL Server启动时自动记录SQL Server启动信息.该功能犹如飞机的黑匣子,会记录一个SQL Server实例配置信息的所有改动.查看该信息,可以看出故障 ...
- 解决Docker容器日志占用空间过大
目录 问题描述 查看容器日志大小 解决方案 脚本方案(不推荐) 针对单个容器方案 针对全局容器方案 注意 问题描述 docker容器日志导致主机磁盘空间满了.docker logs -f contai ...
最新文章
- mysql配置参数调优(8GB内存和64GB内存)
- 非极大值抑制(Non-maximum suppression)在物体检测领域的应用
- Struts2_模块包含 及Action总结
- java方法报错_.setUndecorated 方法报错
- python 获取向上两级路径_Python学习第171课--相对路径和绝对路径
- Oracle 或关闭中国研发中心(CDC):裁员 1600 人
- 一步一步手写实现实时监测物体YOLO v3 EASY METHOD | OpenCV Python CNN卷积神经网络
- 计算机网络:数据链路层(2):MAC协议
- 英特尔cpu发布时间表_2014英特尔处理器发布时间表
- 人工智能帮你文字转为Logo | 机器学习
- git公钥私钥及密码说明
- Windows Docker Desktop 无法启动报错 Docker Desktop is shutting down 的可能解决办法
- 如何理解处理器、CPU、多处理器、内核、多核?
- Qt笔记(四十)之Qt打开笔记本摄像头
- 过去一年,网易新闻是如何甩开对手的?
- maven archetype 自定义
- Frontend 当前前端的三种渲染方式
- linux的firewall火墙管理
- 翻页时钟Fliqlo不显示时间
- 日程信息管理系统设计与实现C 语言论文,C课设个人日程管理系统.docx