收缩数据库 DBCC SHRINKFILE

 数据库中的每个文件都可以通过删除未使用的页的方法来减小。尽管数据库引擎会有效地重新使用空间,但某个文件多次出现无需原来大小的情况后,收缩文件就变得很有必要了。数据和事务日志文件都可以减小(收缩)。可以成组或单独地手动收缩数据库文件,也可以设置数据库,使其按照指定的间隔自动收缩。

  文件始终从末尾开始收缩。例如,如果有个 5 GB 的文件,并且在dbcc shrinkfile 语句中将 target_size 指定为 4 GB,则数据库引擎将从文件的最后一个 1 GB 开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则数据库引擎先将这些页重新放置到文件的保留部分。只能将数据库收缩到没有剩余的可用空间为止。例如,如果某个 5 GB 的数据库有 4 GB 的数据,并且在dbcc shrinkfile语句中将 target_size 指定为 3 GB,则只能释放 1 GB。

  操作命令:

  现在我一个库ASFCORE的日志文件已经达到30G了,数据文件为1G,如果要收缩日志文件,则执行如下命令即可!

  •   查看数据库的recovery_model_desc类型

    SELECT NAME, recovery_model_desc FROM sys.databases

  •   如果是FULL类型,修改为SIMPLE类型  

    ALTER DATABASE ASFCORE SET Recovery simple

  •   收缩日志文件大小(单位是M)

    DBCC SHRINKFILE (N‘ASFCORE_log‘ , 10)

  •   检查日志文件名称

    USE ASFCORE
    SELECT NAME, size FROM sys.database_files

  •   恢复成FULL类型

    ALTER DATABASE ASFCORE SET Recovery FULL

时间: 2024-10-13 16:02:18

收缩数据库 DBCC SHRINKFILE的相关文章

收缩文件 — DBCC SHRINKFILE

–数据库日志文件增长的很快,每次手工收缩不能及时,用下面的方法建立一job可以定时运行 USE brm_lvjian –设置数据库恢复模式为简单ALTER DATABASE BRM_LVJIANSET RECOVERY SIMPLE –收缩日志到1MDBCC SHRINKFILE (‘BRM_LVJIAN_Log’, 1); –设置数据库恢复模式为完整ALTER DATABASE BRM_LVJIANSET RECOVERY FULL

DBCC SHRINKFILE有时收缩文件不成功的原因

DBCC SHRINKFILE收缩的是区一级的数据,会将没在使用中的区进行删除.但会有许多空页分布在区内,造成区在使用,故这样的区得不到删除.若想删除,方式是:重建聚集索引,整理页数据.注:页是SQL Server数据存储的最基本单位,页的大小是8KB,每区由8个页组成,这意味着SQL Server数据库中每MB有128页,16个区.

收缩数据库日志

数据库空间不足时可以尝试收缩数据库试试,收缩数据库需要把 备份模式设置为简单. 1 收缩时非常之慢,如果想停止收缩.应该怎么操作 ? 答案:关闭查询分析器就可以了. 2 收缩的正确步骤: 2.1 先查看可收缩空间 (即可用空间) 2.2 先从小收缩看看,别上来就整个库收缩了. use [databasename] DECLARE @DataFileName VARCHAR(255); SET @DataFileName = (SELECT name FROM sysfiles WHERE gro

批量收缩数据库日志文件

declare @sql nvarchar(max),@paramDef nvarchar(100) declare dbname scroll cursor for select name,recovery_model from sys.databases where database_id>7 open dbname declare @dbname varchar(50),@recovery_model int,@db_log_file varchar(100) set @dbname=''

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

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

sql-server的添加数据库文件(日志数据)以及收缩数据库文件(日志数据)

环境: SSMS sql-server2016 一.为数据库添加数据文件 添加日志数据文件 以下是添加数据文件和日志文件的代码 ALTER DATABASE [joinbest] ADD FILE ( NAME = N'joinbest_2', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\joinbest_2.ndf' , SIZE = 8192KB , FILEGROWTH

曲演杂坛--收缩数据库数据文件

--===================================================================== 部分朋友在遇到收缩数据库文件的时候遇到一些困难,发现明明有大量剩余空间或删除了大量数据,还是无法收缩数据库,这是为啥子呢? --==================================================================== 要收缩数据库文件,首先我们需要确定有多少空间可以收缩,由于收缩文件是按照Extent来收缩

SQL SERVER运维日记--收缩数据库

一个小故事 某天,小王正在和HR妹妹闲聊,正HAPPY时,,突然收到系统告警消息,数据库磁盘被剩余空间500M,OMG,不行,磁盘快满了,要是业务要停了,,那就小王只能删库到跑路了,,, 先检查下,有没有可以删除的不用的文件,结果都是重要的或者拿不准的.先收缩下数据库吧,点击运行.等收缩完成就可以继续去根HR妹妹聊天了.突然电话座机和手机齐鸣,小王心里一种不祥的预感呢?好像这个场景在哪里见过..不会是数据库阻塞了吧?? 手忙脚乱的先接起手机,因为来电显示是某业务部门主管 “小王啊,,现在系统卡死

SQL Server实现自动收缩数据库日志文件

1 --在作业中 执行下面SQL代码 即可实现 自动收缩日志文件.(MSSQL 维护计划中没有提供自动收缩日志文件的功能) 2 --非 镜像 复制订阅 日志传送的情况下 执行. 如果存在日志传送莫要执行 否则日志传送会失败 3 declare @exec_sql nvarchar(1200),@simple_sql nvarchar(1200),@full_sql nvarchar(1200) 4 declare @db_name varchar(128) 5 declare @db_count