欢迎来到天天文库
浏览记录
ID:11619734
大小:20.51 KB
页数:7页
时间:2018-07-13
《数据库日志文件收缩文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据库sqlserver2005日志文件压缩文档如何压缩SQLServer2005指定数据库文件和日志的大小?下面有两个SQL语句可以达到在SQLServer2005/2008压缩指定数据库文件和日志的大小的效果:1、DBCCSHRINKDATABASE(Transact-SQL)收缩指定数据库中的数据文件和日志文件的大小。语法DBCCSHRINKDATABASE('database_name'
2、database_id
3、0[,target_percent][,{NOTRUNCATE
4、TRUNCA
5、TEONLY}])[WITHNO_INFOMSGS]参数'database_name'
6、database_id
7、0要收缩的数据库的名称或ID。如果指定0,则使用当前数据库。target_percent数据库收缩后的数据库文件中所需的剩余可用空间百分比。NOTRUNCATE通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent是可选参数。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定NOTRUNCATE时,数据库看起来未收
8、缩。NOTRUNCATE只适用于数据文件。日志文件不受影响。TRUNCATEONLY将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与TRUNCATEONLY一起指定,将忽略target_percent。TRUNCATEONLY只适用于数据文件。日志文件不受影响。WITHNO_INFOMSGS取消严重级别从0到10的所有信息性消息。备注若要收缩特定数据库的所有数据和日志文件,请执行DBCCSHRINKDATABASE命令。若要一次收缩一个特
9、定数据库中的一个数据或日志文件,请执行DBCCSHRINKFILE命令。若要查看数据库中当前的可用(未分配)空间量,请运行sp_spaceused。可在进程中的任一点停止DBCCSHRINKDATABASE操作,任何已完成的工作都将保留。收缩后的数据库不能小于数据库的最小大小。最小大小是在数据库最初创建时指定的大小,或是使用文件大小更改操作(如DBCCSHIRNKFILE或ALTERDATABASE)显式设置的最后大小。例如,如果数据库最初创建时的大小为10MB,后来增长到100MB,则该数据库
10、最小只能收缩到10MB,即使已经删除数据库的所有数据也是如此。运行DBCCSHRINKDATABASE而不指定NOTRUNCATE选项或TRUNCATEONLY选项等价于带NOTRUNCATE运行DBCCSHRINKDATABASE操作,然后再带TRUNCATEONLY运行DBCCSHRINKDATABASE操作。要收缩的数据库不必在单用户模式下;其他的用户仍可以在数据库收缩时对其进行工作。这也包括系统数据库。不能在备份数据库时收缩数据库。反之,也不能在数据库执行收缩操作时备份数据库。DBCCS
11、HRINKDATABASE的工作原理DBCCSHRINKDATABASE以每个文件为单位对数据文件进行收缩。然而,DBCCSHRINKDATABASE在对日志文件进行收缩时,它将视为所有的日志文件都存在于一个连续的日志池中。文件始终从末尾开始收缩。假设名为mydb的数据库有一个数据文件和两个日志文件。数据文件和日志文件分别是10MB,并且数据文件包含6MB数据。MicrosoftSQLServer2005数据库引擎对每个文件计算一个目标大小。这就是文件将要收缩到的大小。将target_perce
12、nt与DBCCSHRINKDATABASE一起指定时,数据库引擎计算的目标大小是收缩后文件中的target_percent可用空间大小。例如,如果在收缩mydb时将target_percent指定为25,则数据库引擎将此文件的目标大小计算为8MB(6MB数据加上2MB可用空间)。因此,数据库引擎将任何数据从数据文件的后2MB中移动到数据文件前8MB的可用空间中,然后对该文件进行收缩。假设mydb的数据文件包含7MB的数据。将target_percent指定为30,以允许将此数据文件收缩到可用空间
13、为30%。但是,将target_percent指定为40却不会收缩数据文件,因为数据库引擎收缩文件的目标大小不能小于数据当前占用空间大小。您还可以用另一种方法来考虑此问题:所要求的40%可用空间加上整个数据文件大小的70%(10MB中的7MB),超过了100%。因为所要求的可用百分比加上数据文件占用的当前百分比大于100%(多出10%),所以任何大于30的target_size都不会收缩此数据文件。对于日志文件,数据库引擎使用target_percent来计算整个日志的目标大小;因此,targe
此文档下载收益归作者所有