MS-SQL日志增长太快,为什么
发布网友
发布时间:2022-04-08 10:17
我来回答
共3个回答
懂视网
时间:2022-04-08 14:38
table #t
(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable "insert into #t exec sp_spaceused ‘?‘"
select SUBSTRING(t.reserved, 0, CHARINDEX(‘KB‘, t.reserved)-1), *
from #t t
order by cast(SUBSTRING(t.reserved, 0, CHARINDEX(‘KB‘, t.reserved)-1) as int) desc
drop table #t
SqlServer数据文件增长也很快,到底是哪些表增长造成的呢?
标签:
热心网友
时间:2022-04-08 11:46
三种不同的模式,介绍如下,你也可以看看这帖
http://technet.microsoft.com/zh-cn/library/ms187048(SQL.90).aspx
主要就是,完整是会记录你每一步操作的,如果你导入、删除这样的操作非常多,则日志增长非常快。比如你要清除历史数据,用的是DELETE命令,则删除的这些操作都是会记录日志的。
完整恢复模式使用日志备份在最大范围内防止出现故障时丢失数据,这种模式需要备份和还原事务日志(“日志备份”)。 使用日志备份的优点是允许您将数据库还原到日志备份内包含的任何时点(“时点恢复”)。 假定可以在发生严重故障后备份活动日志,则可将数据库一直还原到没有发生数据丢失的故障点处。 使用日志备份的缺点是它们需要使用存储空间并会增加还原时间和复杂性。
简单复原模式提供最简单的备份和还原形式。因为永远不会备份交易记录,所以备份很容易管理。不过,如果没有记录备份,就只能将数据库还原到资料最近一次备份的结尾。如果会发生失败,则资料最近一次备份之后所做的更新将遗失。
大容量日志恢复模式是一种特殊用途的恢复模式,只应偶尔用于提高某些大规模大容量操作(如大量数据的大容量导入)的性能。 完整恢复模式下有关备份的许多说明也适用于大容量日志恢复模式。建议尽量减少大容量日志恢复模式的使用。 最好的方法是在一组大容量操作之前切换到大容量日志恢复模式,执行操作,然后立即切换回完整恢复模式。
热心网友
时间:2022-04-08 13:04
--压缩日志
1:截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
4: 如果想以后不让它增长
企业管理器--服务器--右键数据库--属性--事务日志--将文件增长*为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
5.设置为自动收缩
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"