SQL 2000探讨 ( 积分: 50 )

  • 主题发起人 主题发起人 CHINESEWHOAMI
  • 开始时间 开始时间
C

CHINESEWHOAMI

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一个SQL数据库表,文件大小达到20G,已删除很多表,也进行表收缩了,可为什么其文件大小都没变,还是20G?是不是SQL&nbsp;SERVER&nbsp;2000本身的BUG?还是其它什么问题,要怎么搞定?<br>请兄弟们指教(很急)。谢谢!
 
各位大哥,请多赐教...谢谢!
 
收缩了数据库???<br><br>还只是对日志的截断;
 
你的日志文件太大了,可以删除点
 
在查询分析器中执行DBCC&nbsp;SHRINKFILE<br>具体用法请查看SQL&nbsp;SERVER联机丛书。<br><br>更方便的方法是通过企业管理器:<br>选择数据库-&gt;右键-&gt;所有任务-&gt;收缩数据库,选择下面的收缩文件,按指示操作。<br>这个操作由数据库在后台执行调用数据页,所以时间会比较长,你的情况,我估计可能要20分钟-40分钟才能完成.<br>(以上基于SQLSERVER2000)<br><br>另:能遇到大型成熟软件的BUG的机会在使用不长的情况下很小的,遇到问题应该努力深究下去进而解决,而不应该怀疑是软件本身的问题。
 
这里有一个执行语句:<br>--在MASTER数据库中执行以下脚本(使用查询分析器)<br>declare&nbsp;@dbname&nbsp;varchar(50)<br>declare&nbsp;temp_cur&nbsp;cursor&nbsp;scroll&nbsp;for&nbsp;select&nbsp;name&nbsp;from&nbsp;sysdatabases--定义游标为选择系统用户数据库的名称<br>open&nbsp;temp_cur--打开<br><br>fetch&nbsp;first&nbsp;from&nbsp;temp_cur&nbsp;into&nbsp;@dbname--从&nbsp;Transact-SQL&nbsp;服务器游标中检索特定的一行<br>while&nbsp;@@fetch_status&nbsp;=0&nbsp;--返回被&nbsp;FETCH&nbsp;语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态<br>begin<br>&nbsp;&nbsp;exec&nbsp;('backup&nbsp;log&nbsp;'+@dbname+'&nbsp;with&nbsp;no_log')--截断事务日志<br>&nbsp;&nbsp;exec&nbsp;('dbcc&nbsp;shrinkdatabase('+@dbname+')')--收缩数据库<br>&nbsp;&nbsp;exec&nbsp;('dbcc&nbsp;checkcatalog&nbsp;('+@dbname+')')--检查指定数据库中的系统表内及系统表间的一致性。<br>&nbsp;&nbsp;exec&nbsp;('dump&nbsp;transaction&nbsp;'+@dbname+'&nbsp;with&nbsp;no_log')--备份事务日志<br>&nbsp;&nbsp;fetch&nbsp;next&nbsp;from&nbsp;temp_cur&nbsp;into&nbsp;@dbname--循环条件:到下一个数据库名称<br>end<br>close&nbsp;temp_cur--关闭游标<br>deallocate&nbsp;temp_cur---删除游标引用
 

Similar threads

后退
顶部