最好不要重新启动SQL server的,templog也要一起shrink吗?

解决方案 »

  1.   

    不明白sqlserver群里这么多人喜欢收缩数据库。 如果磁盘空间足够, 有意义吗?
      

  2.   

    引用:
    1.清空日志
    DUMP TRANSACTION 库名 WITH NO_LOG2.截断事务日志:
    BACKUP LOG 库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
    --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成 
    --收缩数据库
    DBCC SHRINKDATABASE(库名)
      

  3.   

    sql server 中收缩数据库有意义吗??http://topic.csdn.net/u/20100813/20/87f459c5-7fc0-4a45-8899-328f14827698.html?67044
      

  4.   


    这里我建议你做几件事将你的TEMPDB 移植到其他的盘符下不要在C盘下收缩数据库是很简单的事情分为 SQL SERVER 2008 和 SQLL 2005 SQL SERVER 2000 两种因为SQL SERVER 2008 已经废除了 backup log with no_log 等语句  sql server 2005 2000 的收缩方法请看在保证数据库正常备份的情况下,DUMP日志2005 数据库中可以使用use [目标数据库]gobackup log [目标数据库] with no_loggodbcc shrinkdatabase ('目标数据库', 20, truncateonly)2008 的方法分析: 在2005上可以使用的命令已经在sql server 2008上不能使用了sql server 2008 不在支持 backup log with no_log ,需要替换为USE [master]
    GO
    ALTER DATABASE [目标数据库] SET RECOVERY SIMPLE WITH NO_WAIT
    GODBCC shrinkdatabase ('目标数据库', truncateonly)USE [master]
    GO
    ALTER DATABASE [目标数据库] SET RECOVERY FULL WITH NO_WAIT
    GO
      

  5.   

    请问这些方法,如果有人正在用,有transaction的话,行吗?
    不想restart sql server
      

  6.   

    我在本地按照liuhuayang的做了,出现
    DBCC SHRINKDATABASE: File ID 1 of database ID 2 was skipped because the file does not have enough free space to reclaim.
    DBCC SHRINKDATABASE: File ID 2 of database ID 2 was skipped because the file does not have enough free space to reclaim.
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.
      

  7.   

    我们用的是sql 2008 server
      

  8.   


    你看上面说的已经很清楚了,你tempdb 的磁盘是不是 空间已经很少了,做 shrink也是需要一定空间的你现在的磁盘空间恐怕是不足了
      

  9.   

    是我tempdb不够大,还是我的C盘磁盘空间太小
      

  10.   

    另外如果是 sql server 2008 其实就更好办了1 tempdb 数据库置于 simple 的状态2 打开  auto shrink的选择它会自动开始收缩的,不会影响任何人的操作另外由于你C盘的空间估计是快满了, 建议你为 tempdb在 E盘上建立 ndf 和 LDF ,这样你的数据库至少还能正常工作,不至于在C盘饱满后数据库停机
      

  11.   

    我运行
    ALTER DATABASE tempdb SET RECOVERY SIMPLE WITH NO_WAIT
    出现错误
    Option 'RECOVERY' cannot be set in database 'tempdb'.
      

  12.   


    tempdb 默认为 simple  模式 你不需要改变在改变模式直接USE [tempdb]
    GO
    DBCC SHRINKDATABASE(N'tempdb' )
    GO
      

  13.   

    另外把auto shrink 模式打开USE [master]
    GO
    ALTER DATABASE [tempdb] SET AUTO_SHRINK ON WITH NO_WAIT
      

  14.   

    使用 dbcc shrinkfile() 收缩下你的数据库文件和日志文件..合理存放tempdb库是个关键的地方 因为这个库比较重要 要保持良好I/O吞吐 
    移动tempdb到d:\
    use master;
    go
    alter database tempdb
    modify file (name = tempddate,filename='d:\tempdbmodified.mdf');
    go
    alter database tempdb
    modify file (name = templog,filename='d:\templogmodified.ldf');
    go
      

  15.   

    17楼的,出现如下错误
    Option 'AUTO_SHRINK' cannot be set in database 'tempdb'.