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