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

解决方案 »

  1.   

    我直接是用的   dbcc shrinkdatabase('数据库',10)当时没想到要那么久的时间,
    哎,没经验。以为很快,结果把程序关了就执行。
      结果现在还需要那么多的时间。不行的话试试开程序了,这个程序没有用户,只是一些插入操作,,,就不知道会不会有影响。
       收缩的时候要移动后面页的数据到前面的页里,然后又再添加很多数据进去的话比较麻烦吧。
    不知道,sqlserver是怎么计算的。     
      

  2.   

    收缩数据库   
      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   操作试图立即将事务日志文件收缩到所要求的大小(以四舍五入的值为准)。在收缩文件之前应截断日志文件,以减小逻辑日志的大小并将其标记为不包含逻辑日志任何部分的不活动的虚拟日志   
      

  3.   

    至于原理,你看了sql2000的联机丛书没?
    可以找到详细解释。
      

  4.   

    这个原理就是和windows的磁盘整理一样啊,移动数据
    dbcc shrinkdatabase('数据库',10)
    哈哈,太强了,这么小的~~~
      

  5.   

    TopFans(爱上了tcmm) 
      
       lz 4月29就强制结贴了~
      
    貌似说强制结的是去年的贴。