SQL Server数据库技术(35)[MSSQL防范]
本文“SQL Server数据库技术(35)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
数据库在利用一段时间后,经常会呈现因数据删除而造成数据库中闲暇空间太多的情形,这时就需求削减分配给数据库文件和事件日记文件的磁盘空间,免得浪费磁盘空间.当数据库中没有数据时,可以改正数据库文件属性直接改变其占用空间,但当数据库中有数据时,这样做会破坏数据库中的数据,因此需求利用紧缩的方法来缩减数据库空间.可以在数据库属性选项中挑选"Auto shrink"选项,让系统自动紧缩数据库,也可以用人工的办法来紧缩.人工紧缩数据库有以下两种方法:
1、用Enterprise Manager 紧缩数据库
在Enterprise Manager 中在所要紧缩的数据库上单击右键,从快速菜单中的"全部任务(All Tasks)"中挑选"Shrink Database(紧缩数据库)"选项,就会呈现如图6-10 所示的对话框.可以在图6-10 所示的对话框中挑选数据库的紧缩方法,也可以挑选利用紧缩筹划或紧缩单个文件.
单击图6-10 中的"Files"按钮,会呈现如图6-11 所示的紧缩数据库文件对话框,可以针对每个数据库文件举行差别的紧缩设置.
单击图6-10 中的"Change" 按钮,会呈现如图6-12 所示的紧缩筹划编辑对话框,可以指定紧缩筹划的履行方法.单击图6-12 中的"Change" 按钮,会呈现如图6-13 所示的循环工作筹划编辑对话框,可以编辑筹划履行的周期或时间点.设置完成后单击"OK" 按钮就开始紧缩数据库,在紧缩完毕后会显示一个紧缩情形信息框.
2、用Transact-SQL 号令紧缩数据库
可以利用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 号令来紧缩数据库.此中DBCC SHRINKDATABASE 号令对数据库举行紧缩,DBCC SHRINKFILE 号令对数据库中指定的文件举行紧缩.
(1) DBCC SHRINKDATABASE
DBCC SHRINKDATABASE 号令语法以下:
DBCC SHRINKDATABASE (database_name [, target_percent]
[, {NOTRUNCATE | TRUNCATEONLY}] )
各参数阐明以下:
- target_percent 指定将数据库紧缩后,未利用的空间占数据库大小的百分之几.假如指定的百分比过大,超越了紧缩前未利用空间所占的比例,则数据库不会被紧缩.并且紧缩后的数据库不能比数据库初始设定的容量小.
- NOTRUECATE
将数据库缩减后剩余的空间保存在数据库,中不返还给操作系统.假如不挑选此选项,则剩余的空间返还给操作系统. - TRUNCATEONLY
将数据库缩减后剩余的空间返还给操作系统.利用此号令时sql server 将文件缩减到最后一个文件分配,区域但不移动任何数据文件.挑选此项后,target_percent 选项就无效了.
例6-14: 紧缩数据库mytest 的未利用空间为数据库大小的20%.
dbcc shrinkdatabase (mytest, 20)
运行后果以下:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC SHRINKFILE 号令紧缩当前数据库中的文件.其语法以下:
DBCC SHRINKFILE ( {file_name | file_id }
{ [, target_size] |
[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
各参数阐明以下:
- file_id
指定要紧缩的文件的辨别号(Identification number, 即ID).文件的ID 号可以通过 FILE_ID()函数或如本章前面所报告的Sp_helpdb 系统存储历程来得到. - target_size
指定文件紧缩后的大小.以MB 为单位.假如不指定此选项,SQL Server 就会尽最大大概地缩减文件. - EMPTYFILE
指明此文件不再利用,将移动全部在此文件中的数据到同一文件组中的别的文件中去.履行带此参数的号令后,此文件便可以用ALTER DATABASE 号令来删除了.
别的参数NOTRUNCATE 和TRUNCATEONLY 与DBCC SHRINKDATABASE 号令中的含义相同.
例6-15: 紧缩数据库mydb 中的数据库文件mydb_data2 的大小到1MB. use mydb dbcc shrinkfile (mydb_data2, 1)
本文地址: | 与您的QQ/BBS好友分享! |