MSSQL收缩日志一下可以大大减小日志文件的体积,极大的提高系统的性能。本文介绍通过一条简单的标准语句来完成这一目的:
首先,你需要知道日志文件的数据库名称,及其使用模式(使用模式可以在sys.database中查),然后通过下面的标准语句:
`BACKUP LOG [Your_Database_Name] WITH TRUNcatE_ONLY`
来完成MSSQL收缩日志。相信不少小伙伴已经猜到了,该语句是收缩日志文件的关键。TRUNCATE_ONLY表示只删除不备份日志文件,而不备份数据库。
有位小伙伴会问,究竟有什么用?答案很简单,该语句能够快速减小日志文件的体积,减少数据库花费磁盘空间。此外,通过收缩日志文件,也能减少数据库管理的时间及负担,更好的实现数据库资源的有效管理。

有时候,小伙伴们在失败了几次收缩日志后,都发现当前日志文件还是没有收缩成功。原因一般就是在语句执行期间,必须确保日志文件可写。也就是说,你必须保证日志文件的扩展模式是SIMPLE而不是FULL或者BULK-LOGGED,通过检查sys.database的recovery_model字段来确认。
此外,当日志文件增长到一定程度时,收缩日志文件可能很慢或者失败,原因可能是日志文件无法收缩,此时,你可以使用更强大的语句:
`EXEC sp_cycle_errorlog;`
它可以让你更好地收缩日志文件,并释放出更多磁盘空间。
总结:MSSQL通过一条简单的标准语句,就能快速收缩日志文件,减少数据库花费磁盘空间,提高系统性能。但还需要注意,该语句执行前日志文件的模式必须为SIMPLE,否则可能无法成功收缩日志文件。至于日志文件极大的时候,可使用更强大的语句`EXEC sp_cycle_errorlog;`来达到这一目的。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
求一sql批量插入数据库的语句
declare @回i intset @i=0while(@i<1000)begin答insert into a(url) values(XXXXXX_+cast(@i as varchar))set @i=@i+1end
SQL SERVER 日志过大怎么办?
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。 1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。 另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。 1: 删除LOG分离数据库 企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件附加数据库 企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。 注意:建议使用第一种方法。 如果以后,不想要它变大。 SQL2000下使用:在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。 或用SQL语句:alter database 数据库名 set recovery simple另外,Truncate log on checkpoint(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True Auto shrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。 注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。
如何清理SQL服务器日志
全部删除:dump transaction master with no_log;dump transaction master with truncate_only单个删除:DUMP TRANSACTION @DataBaseName WITH NO_LOGDBCC SHRINKFILE( @LogoFileName,@NewSize) --收缩 日志declare @dbname varchar(20)set @dbname=THSYBSecondTest--1.清空日志exec(DUMP TRANSACTION [+@dbname+] WITHNO_LOG)--2.截断事务日志:exec(BACKUP LOG [+@dbname+] WITH NO_LOG)--3.收缩数据库文件(如果不压缩,数据库的文件不会减小exec(DBCC SHRINKDATABASE([+@dbname+]))--4.设置自动收缩exec(EXEC sp_dboption +@dbname+,autoshrink,TRUE)
发表评论