2022-10-27 387
SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了300MB,而实际上只占用了20MB空间,这样就会造成磁盘存储空间的浪费。可以通过数据库收缩技术对数据库中的每个文件进行收缩,删除已经分配但没有使用的页。从而节省服务器的存储的成本。
官方解释:收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。在文件末尾创建足够的可用空间后,可以取消对文件末尾的数据页的分配并将它们返回给文件系统。
收缩后的数据库不能小于数据库最初创建时指定的大小。 或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大小。
比如:如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。
不能在备份数据库时收缩数据库。 反之,也不能在数据库执行收缩操作时备份数据库。
介绍:收缩指定数据库中的数据文件大小。
语法格式:
DBCCSHRINKDATABASE (database_name[,target_percent] [,{NOTRUNCATE|TRUNCATEONLY}] )
参数说明:
介绍:收缩当前数据库的指定数据或日志文件的大小,或通过将数据从指定的文件移动到相同文件组中的其他文件来清空文件,以允许从数据库中删除该文件。文件大小可以收缩到比创建该文件时所指定的大小更小。这样会将最小文件大小重置为新值。
语法格式:
DBCCSHRINKFILE ( {file_name|file_id} {[,EMPTYFILE] |[[,target_size][,{NOTRUNCATE|TRUNCATEONLY}]] } ) [WITHNO_INFOMSGS]
参数说明:
例如,如果创建一个10MB 的文件,然后在文件仍然为空的时候将文件收缩为2 MB,默认文件大小将设置为2 MB。这只适用于永远不会包含数据的空文件。
--将TestDB数据库中的TestDB文件的大小收缩到20MB。 USETestDB; GO DBCCSHRINKFILE(TestDB,20); --将减小UserDB用户数据库中数据文件和日志文件的大小,以便在数据库中留出10%的可用空间 DBCCSHRINKDATABASE(TestDB,30); --清理数据库日志文件为2M USEmaster ALTERDATABASETestDBSETRECOVERYSIMPLEWITHNO_WAIT ALTERDATABASETestDBSETRECOVERYSIMPLE--简单模式 USETestDB DBCCSHRINKFILE(N'TestDB_log',2,TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定 USEmaster ALTERDATABASETestDBSETRECOVERYFULLWITHNO_WAIT ALTERDATABASETestDBSETRECOVERYFULL--还原为完全模式
原文链接:https://77isp.com/post/10348.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态