sql2005数据库收缩
① 如何清空sql server 2005日志文件
SQL Server数据库长期使用后,日志文件可能会变得非常大,占用大量的系统资源,甚至可能导致“日志满”错误,使数据库不可用。在这种情况下,我们需要定期清理数据库。
清理SQL Server数据库日志的方法有几种。最常用的方法是清空日志。具体步骤如下:
1. 打开查询分析器,输入命令“DUMP TRANSACTION 数据库名 WITH NO_LOG”,这将清空当前事务日志。
2. 使用企业管理器,右键点击你要压缩的数据库,选择“所有任务”下的“收缩数据库”选项,再选择“收缩文件”,然后选择日志文件。在收缩方式中选择“收缩至”,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定即可。
另一种方法虽然能够生成新的日志文件,但有一定的风险,因为SQL Server的日志文件不是即时写入数据库主文件的。如果不当操作可能会导致数据丢失。
具体步骤如下:
1. 首先分离数据库。在企业管理器中,选择服务器,然后选择数据库,右键点击,选择“分离数据库”。
2. 删除日志文件。在企业管理器中,选择服务器,然后选择数据库,右键点击,选择“附加数据库”。这将生成新的日志文件,其大小通常只有500多K。
对于SQL 2000以下版本,可以使用以下方法防止日志文件过大:
1. 在数据库上右键点击,选择“属性”,在“选项”中选择“故障恢复-模型”,然后选择“简单模型”。
2. 使用SQL语句:“ALTER DATABASE 数据库名 SET RECOVERY SIMPLE”。
此外,数据库属性中还包含与事务日志增长相关的两个选项:
1. Truncate log on checkpoint(此选项适用于SQL 7.0,SQL 2000中即故障恢复模型选择为简单模型)。当执行CHECKPOINT命令时,如果事务日志文件超过其大小的70%,则将其内容清除。开发数据库时常常将此选项设置为True,当数据库文件或日志文件的未用空间超过其大小的25%时,系统将自动缩减文件使其未用空间等于25%。当文件大小没有超过其建立时的初始大小时,不会缩减文件。缩减后的文件也必须大于或等于其初始大小。对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint选项设为True时才能进行。
需要注意的是,一般立成建立的数据库默认属性已设好,但如果遇到意外情况使数据库属性被更改,请用户在清空日志后,检查数据库的以上属性,以防事务日志再次充满。
② SQL2005数据库日志文件LOG太大怎么办
Sqlserver2005下,日志文件太大,使其减小的方法。
在打开SQL Server Management Studio并正常联接SQL服务器后,运行下面的三行:
( 注意将dbName代换为你的数据库名。)
backup log dbName with NO_LOG
backup log dbName with TRUNCATE_ONLY
DBCC SHRINKDATABASE(dbName)
注意,在SQL 2008之后的版本以上方法无效,需将数据库设为简单模式后再进行收缩。
此外,在SQL Server Management Studio中,以视窗方法操作也可以,操作步骤:
第一步:截断数据库日志,运行代码:
BACKUP LOG 要收缩的数据库名 WITH NO_LOG
第二步:收缩数据库日志文件:
1. 选择要收缩的数据库,点右键选择任务-收缩-文件
2. 在弹出的页面中,选择文件类型为日志
3.点确定。
③ sql收缩数据库日志的几种办法
在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL,
方法一:
--BigData为数据库名
DUMPTRANSACTIONBigDataWITHNO_LOG
BACKUPLOGBigDataWITHNO_LOG
DBCCSHRINKDATABASE(BigData)
执行以上语句可以快速压缩日志文件到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已经不再支持DUMPTRANSACTION和BACKUP LOG WITH NO_LOG,
sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。
SQL Server 2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。
方法二:
useDB_NAME
sp_dboptionDB_NAME,"trunc.logonchkpt.",true
checkpoint
sp_dboptionDB_NAME,"autoshrink",true
方法三:(请提前备份文件!!)
Detach数据库。
删除log文件。
附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。
方法四:
USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d: est.bak'
--.
DBCCSHRINKFILE(Bigdata_Log,1);
GO