如何用 SQL语句压缩 SQL SERVER 2008的日志件
解决方案 »
- 新手求教
- sql server 2000中数据的分离存储在哪里?
- SQL里面的作业调度可以直接执行ASP语句么?
- 如何形成动态的WHERE条件
- 安装SQL Server 2005的附带和必需的软件。请熟悉的帮忙解释下。谢谢。
- 急问存储过程,在线等...,3ks!
- 如何将一个二进制文件内容,插入到text属性的字段中,以后读出文件内容不被更改。
- sp-getapplock & sp-releaseapplock 是干什么用的 ? 怎么用 ?
- 关于视图触发器,救命啊!
- 在sql存储过程中,如何设置top 的数量为变化的数值?
- 急求两个server跑一样的存储过程结果不同
- 囧囧有神 强制保留小数问题
可以使用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.
(2) DBCC SHRINKFILE
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)
应该跟SQL2005差不多吧MSSQL2005日志的收缩1.右键在清除日志的数据库,如“TestDB”,点击[新建查询(Q)]
2.输入以下SQL语句,其中“TestDB”是数据库名称DUMP TRANSACTION TestDB WITH NO_LOG3.执行该SQL,成功后继续以下操作4.右键该数据库节点,点击[任务(T)] -> [收缩(S)] -> [文件(F)]5.在弹出的“收缩文件”对话框中,将“文件类型(T)”选为“日志”,将“收缩操作”选中“在释放未使用的空间前重新组织页(O)”6.在“将文件收缩到(K)”文本框中输入后面提示的最小大小的数值,点击[确定]即可。忽然发现原来空间急剧减少的原因是MSSQL2005的errorlog,而不是database的log文件。太囧了~~~现在补上清楚MSSQL2005的errorlog的办法。sql2005的error一共有6个,从errorlog,errlog.1一直到errorlog.6貌似是7个。。执行一次EXEC sp_cycle_errorlog就会产生一个新的errorlog,然后把errorlog.6给删掉。就是先进先出(队列类似的情况)这样循环6次就可以把errorlog都刷新一遍。老的那个就被删掉了。
用 dbcc shrinkfile 收缩日志。dump backup 语句是早期版本的,在 2008 中已经不支持了。
用 dbcc shrinkfile 收缩日志。
UP这个。
可以参考 MSDN关于 dbcc shrinkfile
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)
先backup log
再dbcc shrinkfile.