日期:2014-05-19  浏览次数:21201 次

收缩数据库可以中途停止吗?
数据库太大了,已经收缩了15个西欧按时,现在还有几百G需要收缩,请问可以停止了
      会不会影响已经释放的空间,对数据库又有影响吗?

------解决方案--------------------
不行
------解决方案--------------------
建议不要强行终止~~~
小心数据库损坏~~~
------解决方案--------------------
停止之后空间不会缩小.
缩收的时候也可以对数据库进行操作,但就是速度很慢.我们也是经常在用户使用数据库时收缩数据库,结果用户打电话说很慢我们就停止,还没发现数据库有损坏的现象.
使用的语句是:
backup log 数据库 with no_log
dbcc shrinkdatabase( '数据库 ',0,notruncate)
------解决方案--------------------
收缩数据库
MicrosoftSQL Server2000 允许收缩数据库中的每个文件以删除未使用的页。数据和事务日志文件都可以收缩。数据库文件可以作为组或单独地进行手工收缩。数据库也可设置为按给定的时间间隔自动收缩。该活动在后台进行,并且不影响数据库内的用户活动。

当使用 ALTER DATABASE AUTO_SHRINK 选项(或 sp_dboption 系统存储过程)将数据库设置为自动收缩,且数据库中有足够的可用空间时,则会发生收缩。但是,如果不能配置要删除的可用空间的百分比,则将删除尽可能多的可用空间。若要配置将删除的可用空间量,例如只删除数据库中当前可用空间的 50%,请使用SQL Server 企业管理器内的 "属性 "对话框进行数据库收缩。

不能将整个数据库收缩到比其原始大小还要小。因此,如果数据库创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小能够收缩到 10 MB(假定已经删除该数据库中所有数据)。

但是,使用 DBCC SHRINKFILE 语句,可以将单个数据库文件收缩到比其初始创建大小还要小。必须分别收缩每个文件,而不要试图收缩整个数据库。

事务日志文件可在固定的边界内收缩。虚拟日志的大小决定可能减小的大小。因此,不能将日志文件收缩到比虚拟日志文件还小。另外,日志文件可以按与虚拟日志文件的大小相等的增量收缩。例如,一个初始大小为 1 GB 的较大事务日志文件可以包括五个虚拟日志文件(每个文件大小为 200 MB)。收缩事务日志文件将删除未使用的虚拟日志文件,但会留下至少一个虚拟日志文件。因为此示例中的每个虚拟日志文件都是 200 MB,所以事务日志最小只能收缩到 200 MB,且每次只能以 200 MB的大小收缩。若要让事务日志文件收缩得更小,可以创建一个更小的事务日志,并允许它自动增长,而不要创建一个较大的事务日志文件。

在 SQL Server 2000 中,DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 操作试图立即将事务日志文件收缩到所要求的大小(以四舍五入的值为准)。在收缩文件之前应截断日志文件,以减小逻辑日志的大小并将其标记为不包含逻辑日志任何部分的不活动的虚拟日志

------解决方案--------------------
至于原理,你看了sql2000的联机丛书没?
可以找到详细解释。
------解决方案--------------------
这个原理就是和windows的磁盘整理一样啊,移动数据
dbcc shrinkdatabase( '数据库 ',10)
哈哈,太强了,这么小的~~~
------解决方案--------------------
哈哈,这个我估计也没有现成的资料好查了
新数据添加到原来的页中,操出页大小就再分配页了,还是和原来的一样
整理和新加数据应该是没有相互影响的,比如在整理磁盘的时候如果没有写数据操作
整理后的数据空间是连续的,如果其中写数据了,磁盘整理程序也不会将新加数据产生
的碎片马上整理,肯定还是会有碎片
lz还真是好学啊
先帮顶!!!
------解决方案--------------------
TopFans(爱上了tcmm)

lz 4月29就强制结贴了~

貌似说强制结的是去年的贴。