SqlServer-清理数据库空间

2019-06-24  本文已影响0人  郭_9270

1、清理数据库日志:ldf文件

USE sqqhxxdata--数据库名称

GO

ALTER DATABASE sqqhxxdata SET RECOVERY SIMPLE WITH NO_WAIT

GO

ALTER DATABASE sqqhxxdata SET RECOVERY SIMPLE --简单模式

GO

USE sqqhxxdata

GO

DBCC SHRINKFILE (N'QingHua_log' , 11, TRUNCATEONLY)--这个日志文件可能不是我们在盘符里看到的,需要运行下边的语句进行查询

GO

--'这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询

--USE sqqhxxdata

--GO

--SELECT file_id, name FROM sys.database_files;

--GO

USE sqqhxxdata

GO

ALTER DATABASE sqqhxxdata SET RECOVERY FULL WITH NO_WAIT

GO

ALTER DATABASE sqqhxxdata SET RECOVERY FULL --还原为完全模式

GO

2、数据收缩

DBCC SHRINKDATABASE(ycslzt);

DBCC SHRINKFILE(1)

3、清理数据量大表的历史数据

1、查询统计每张表的数据行数及所占空间

-- 查询数据库中所有的表名及行数

SELECT    a.name, b.rows

FROM        sys.sysobjects AS a INNER JOIN

                      sys.sysindexes AS b ON a.id = b.id

WHERE    (b.indid IN (0, 1)) AND (a.type = 'u')

ORDER BY  b.rows DESC

-- 查询所有的标明及空间占用量\行数

SELECT    OBJECT_NAME(id) AS tablename, 8 * reserved / 1024 AS reserved, RTRIM(8 * dpages) + 'kb' AS used, 8 * (reserved - dpages) / 1024 AS unused,

                      8 * dpages / 1024 - rows / 1024 * minlen / 1024 AS free

FROM        sys.sysindexes

WHERE    (indid = 1)

ORDER BY tablename, reserved DESC

2、清理数据大表的历史数据

执行这个操作时遇到一个问题:删除大量数据比如过千万的数据时,会导致数据日志激增,导致一次性删除全部无效数据过程中会报错,无法完成删除。然后就需要分步删除。

3、清理数据后重复1、2步骤。

实战脚本

DELETE FROM zt_task_detail WHERE ID < 10000000;

ALTER DATABASE ycslzt SET RECOVERY SIMPLE WITH NO_WAIT;

ALTER DATABASE ycslzt SET RECOVERY SIMPLE; --简单模式

DBCC SHRINKFILE (N'gslzcf_Log' , 11, TRUNCATEONLY) ;

ALTER DATABASE ycslzt SET RECOVERY FULL WITH NO_WAIT;

ALTER DATABASE ycslzt SET RECOVERY FULL; --还原为完全

DELETE FROM zt_task_detail WHERE ID < 20000000;

ALTER DATABASE ycslzt SET RECOVERY SIMPLE WITH NO_WAIT;

ALTER DATABASE ycslzt SET RECOVERY SIMPLE; --简单模式

DBCC SHRINKFILE (N'gslzcf_Log' , 11, TRUNCATEONLY) ;

ALTER DATABASE ycslzt SET RECOVERY FULL WITH NO_WAIT;

ALTER DATABASE ycslzt SET RECOVERY FULL; --还原为完全

DBCC SHRINKDATABASE(ycslzt);

DBCC SHRINKFILE(1)

上一篇 下一篇

猜你喜欢

热点阅读