美文网首页
SqlServer-清理数据库空间

SqlServer-清理数据库空间

作者: 郭_9270 | 来源:发表于2019-06-24 09:34 被阅读0次

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)

相关文章

  • SqlServer-清理数据库空间

    1、清理数据库日志:ldf文件 USE sqqhxxdata--数据库名称 GO ALTER DATABASE s...

  • 清理空间

    有的时候你不是想赢,而只是不想输。听老光说“损失规避”:当失去时产生的心理痛苦远大于得到时的快乐,所以人们...

  • 清理空间

    看到这么漂亮的房子和花园,有种梦想的家的感觉,这花园该是多么精致的心灵体现,发愿也要过这样别致用心的生活! 第二场...

  • 清理空间

    很多时候很多东西没用了我都不舍得扔,总觉得以后也许用得着,于是堆在那里,空纸盒子,塑料袋,过时的衣服,手...

  • 清理空间

    清理空间 昨天迎来一年一度的大扫除,早上7点就开始清理,扫除是请了钟点工的,可首尾的工作是要自己做的。 扫除第一步...

  • 自动清理MySQL binlog日志

    盘空间被binlog日志占满,导致MySQL数据库出错。 使用下面方法可以安全清理binlog日志 一、没有主从同...

  • 清理

    清理身体、清理内在、清理物质空间和意识空间、清理身周生态圈、清理能量场。 然后,呼吸和流动顺畅,很多东西开始不着力...

  • 周复盘作业

    1.清理空间 1.1写下要清理的物品、空间清单 (1)清理微信收藏:进行了分类整理。 (2)清理手机相册:不满意的...

  • 分享:清理空间

    生活中最最重要的不是时间,最重要的资本是我们的注意力。从意识能量上做清理,认知层面的拓展,一层一层剥一下,看到生命...

  • mac清理空间

    一.xcode瘦身 http://blog.csdn.net/u012338816/article/details...

网友评论

      本文标题:SqlServer-清理数据库空间

      本文链接:https://www.haomeiwen.com/subject/mitnqctx.html