DBCC收缩数据库

简介: 原文 http://www.cnblogs.com/sunshineflower/archive/2013/04/17/3026233.html   DBCC是SQL Server的数据库控制台命令。

原文 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);
目录
相关文章
|
SQL 数据库
MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间
DBCC CHECKDB检查指定数据库中的所有对象的逻辑和物理完整性,具体请参考MSDN文档。我们必须定期对数据库做完整性检查(DBCC CHECKDB),以便能及时发现一些数据库损坏(Corruption)的情况。
1279 0
|
SQL 数据库 BI
MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间
原文:MS SQL巡检系列——检查数据库上一次DBCC CHECKDB的时间 DBCC CHECKDB检查指定数据库中的所有对象的逻辑和物理完整性,具体请参考MSDN文档。我们必须定期对数据库做完整性检查(DBCC CHECKDB),以便能及时发现一些数据库损坏(Corruption)的情况。
1013 0
|
数据库 索引
通过DBCC整理Sqlserver数据库表索引碎片
昨天检查了一张效率极慢的表,两年多没有维护,逻辑扫描碎片高达99.81%,于是开始对这个表进行重点跟踪和记录日志。今天用DBCC SHOWCONTIG WITH TABLERESULTS 命令检查了一下所有表的概况,然后参照着MSDN对字段的说明,发现问题比较严重。
1249 0
|
SQL 数据库 数据安全/隐私保护
对于超大型SQL SERVER数据库执行DBCC操作
原文: 对于超大型SQL SERVER数据库执行DBCC操作 对于数据库维护,主要使用DBCC CHECKDB来实现,以下是对大型数据库的使用说明,小型数据库一般直接使用就可以了: 1、2008(2005我不确认)已经实现了快照检查,也就是当你执行DBCC时,DBMS会先快照出一个数据库,然后在快照上执行检查,这样对原来的库不造成锁的影响。
721 0
|
8天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
72 15
|
2天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
9天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
13天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。