DBCC收缩数据库

原文 http://www.cnblogs.com/sunshineflower/archive/2013/04/17/3026233.html

  DBCC是SQL Server的数据库控制台命令。它可以提供多种命令,用于实现数据库维护、验证、获取信息等功能。

用法一:使用DBCC SHRINKDATABASE语句收缩数据库
     使用DBCC SHRINKDATABASE语句可以收缩指定数据库中的数据文件和日志文件的大小,其基本语法结构如下:

  基本语法:
  DBCC SHRINKDATABASE(数据库名|数据库ID|0,目标百分比,NOTRUNCATE|TRUNCATEONLY)

  在DBCC SHRINKDATABASE后面需要指定要收缩的数据库名称或数据库ID。如果使用0,则收缩当前数据库。

  参数“目标百分比”,可选,只对收缩数据文件有效。使用此参数后,文件末尾已分配的页移动到文件前面未分

配的页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会改变。
参数“TRUNCATEONLY”,可选,也只对收缩数据文件有效。使用此参数后,文件末尾的所有可用空间都会释放给

操作系统,但不在文件内部执行页移动操作。因此,使用此参数数据文件只能收缩最近分配的区。

例如,收缩数据库db_test,剩余可用空间为10%,代码如下:

DBCC SHRINKDATABASE(db_test,10)

 

  需要注意的是,数据库空间并不是越小越好。因为大多数数据库都需要预留一部分空间,以供日常操作使用。因

此,在收缩数据库时,如果数据库文件的大小不变或者反而变大了,则说明收缩空间是常规操作所需要的,这是

,就不需要收缩数据库了。

用法二:使用DBCC SHRINKDATABASE语句收缩指定的数据库文件

  基本语法:
  DBCC SHRINKFILE(文件名|文件ID|0,EMPTYFILE,收缩后文件的大小,NOTRUNCATE|TRUNCATEONLY)

  参数文件名,必填,指要收缩的数据库文件的逻辑名称。
  参数EMPTYFILE,可选,数据库引擎将当前文件的所有数据都迁移到同一文件组中的其他文件,然后可以使用

ALTER DATABASE语句来删除该文件。
  参数"收缩后文件的大小"用整数表示,单位为MB。如果未指定此参数,则文件减少到默认的文件大小。
  参数“TRUNCATEONLY”,可选,也只对收缩数据文件有效。使用此参数后,文件末尾的所有可用空间都会释放给

操作系统,但不在文件内部执行页移动操作。因此,使用此参数数据文件只能收缩最近分配的区。

例如:将数据库db_test中的db_test1文件收缩的20MB,代码如下:

DBCC SHRINKFILE(db_test1,20);

 

例如:使用EMPTYFILE关键字清空数据库文件。
将数据库db_test中的db_test1文件清空,然后使用ALTER DATABASE语句来删除该文件,代码如下:

DBCC SHRINKFILE(db_test1,EMPTYFILE)
GO

ALTER DATABASE db_test1 REMOVE FILE dbtest1

 

例如:有时候日志文件会变得很大,可以使用DBCC SHRINKFILE来收缩日志文件,代码如下:

DBCC SHRINKFILE (db_test_Log, 1);
时间: 2024-09-27 03:37:14

DBCC收缩数据库的相关文章

《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATE

SQL SERVER 收缩数据库与批量收缩详解

存储过程方法  代码如下 复制代码 DECLARE @name VARCHAR(25) DECLARE @SQL VARCHAR(1000) DECLARE @logid INT DECLARE sysdatabase_name CURSOR FOR SELECT name FROM master.dbo.sysdatabases OPEN sysdatabase_name FETCH NEXT FROM sysdatabase_name INTO @name WHILE @@FETCH_STA

mssql 收缩数据库与收缩数据和日志 sql语句

mssql 收缩数据库教程与收缩数据和日志 sql语句本教程只讲取关于mssql server 数据库的收缩语句,索引重建的sql语,以及mssql server 收缩数据和日志的sql语句哦. 收缩数据库 --重建索引 dbcc reindex dbcc indexdefrag --收缩数据和日志 dbcc shrinkdb dbcc shrinkfile

备份和收缩数据库时报错

问题描述 备份和收缩数据库时报错 SQL Server 2008 R2 ,最近还原了一个200G的数据库到了服务器上,对数据库表做了清理, 现在想收缩数据库,备份数据库,都遇到这个报错,'等待用于页 (1:669298),数据库 ID 10 的缓冲区闩锁类型 3 时发生超时.' 各位大神,给个指点吧

[翻译]为什么你不要收缩数据库文件

 我最大的一个热点问题是关于收缩数据文件,虽然在微软的时候,我自己写了相关收缩数据文件代码,我再也没有机会去重写它,让它操作起来更方便.我真的不喜欢收缩.   现在,不要混淆了收缩事务日志文件和收缩数据文件,当事务日志文件的增长失控或为了移除过多的VLF碎片(这里和这里看到金佰利的优秀文章),然而,收缩事务日志数据文件不要频繁使用(罕见的操作)并且不应是你执行定期维护计划的一部分.   收缩数据文件应该执行得甚至更少.这就是为什么--数据文件收缩导致产生了大量索引碎片,让我用一个简单并且你可以运

两种方法收缩SQLServer2000的数据库日志

server|sqlserver|数据|数据库 用命令行: 针对数据库日志文件,比如:数据库名:PUB:日志文件名PUB_LOG,目前为100M,要压缩到10M 第一步:截断事务日志 在SQL查询分析器中,执行BACKUP LOG PUB WITH TRUNCATE_ONLY 第二步:收缩数据库日志到指定大小 在SQL查询分析器中,执行DBCC SHRINKFILE (PUB_LOG,10) 用企业管理器: 右单击要收缩的数据库,选所有任务,收缩数据库,点下面的"文件",在下拉框选择要

MSSQL设置数据库文件自动增长和自动收缩项的方法

SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发生.一般来讲,如果数据库不是很忙,默认的设置为自动增长,这种方式能够满足大部分的需求.但是在大量并发的情况下,申请数据文件和日志文件增长本身是一件非常消耗系统资源和影响性能的工作.所以如果完全依赖SQL Server自动完成,可能会导致系统性能不够稳定.一个管理得比较精细的系统,应该预先考虑到可能的

收缩MSSQL数据库日志的大小方法详解

分为两个步骤: 步骤一 截断数据库中的日志内容  代码如下 复制代码 BACKUP LOG 数据库名称 WITH TRUNCATE_ONLY 步骤二 强制数据库紧缩其大小  代码如下 复制代码 DBCC SHRINKDATABASE ( 数据库名称 , TRUNCATEONLY ) 这两个步骤需求使用查询分析器来执行.关于其具体的意义,请参考MSSQL数据库附带的 Transact-SQL的协助文件. 还有一种方法就是在MSSQL企业管理器的数据库属性>>选项中,将毛病还原>>模型

使用DBCC CHECKDB手工修复数据库

alter   database   accp  set   single_user   with   rollback   immediate   go alter database  accp  set emergency go --查看数据库可疑的原因 dbcc checkdb ('accp') go ---看报什么错误,对应修复尝试 DBCC CHECKDB ('数据库 或损坏的表名', REPAIR_FAST) --重建索引并修复 DBCC CHECKDB (数据库或损坏的表名', R