SQL Server 数据库中的收缩数据库和文件操作

 更新时间:2023年07月12日 09:13:08   作者:菇毒  
收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间,在文件末尾创建足够的空间后,可取消对文件末尾的数据页的分配并将它们返回给文件系统,本文给大家介绍SQL Server 数据库中的收缩数据库和文件的相关知识,一起看看吧

1. 概述

当数据库随着时间而越来越大时,可对数据库进行收缩操作;收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间,在文件末尾创建足够的空间后,可取消对文件末尾的数据页的分配并将它们返回给文件系统;

2. 自动收缩数据库

SQL Server 数据库支持自动收缩数据库和用户手动收缩数据库两种方式;为提高数据库的使用效率,SQL Server 会寻找可用的数据库并找出第一个配置为自动收缩的数据库,它将检查该数据库,并在需要时收缩该数据库;待一个数据库收缩完成后,系统会等待几分钟再检查下一个配置为自动收缩数据库,即 SQL Server 不会同时坚持所有数据库,也不会同时收缩所有数据库,它将以循环方式处理各个数据库,以负载在时间上错开;若用户需要 SQL Server 数据库系统自动对数据库进行收缩,只需为该数据库设置自动收缩功能即可;操作步骤如下所示:

右击选择数据库 → 属性 → 在数据库属性对话框,选项 → 将自动收缩设置为 TRUE;

20220323

3. 手动收缩数据库

用户还能手动对数据库进行收缩,但手动收缩数据库有一定的限制和局限;主要的表现有如下几个方面:

  • 收缩后的数据库不能小于数据库的最小大小 ;最小大小在数据库创建时指定的大小,或者上一次使用文件大小更改操作设置的大小;
  • 不能在备份数据库时收缩数据库;反之,也不能在数据库执行收缩时备份数据库;
  • 遇到内存游湖的列存储索引时,DBCC SHRINKDATABASE 操作将会失败;遇到 columnstore 索引之前完成的工作将会成功,所以数据库可能会较小;若要完成 DBCC SHRINKDATABASE,则需要执行 DBCC SHRINKDATABASE前禁用所有列的存储索引,再重新生成列存储的索引;

手动收缩数据库可在 SSMS 工具的对象资源管理器中完成,具体步骤如下:

  • 展开数据库,右击要收缩的数据库;
  • 任务收缩 → 单击数据库

20220323

20220323

在收缩数据界面展示的是数据库 srs 的基本信息,若需要进行收缩操作,需要先选中在释放未使用的空间前重新组织文件。选中此项可能会影响性能(R),再收缩后文件中的最大可用空间中选择收缩后的空间,单击确定,即可完成手动收缩数据库操作;

4. 手动收缩文件

  • 手动收缩文件跟手动收缩数据库操作类似;
  • 在 SSMS 工具对文件的对象资源管理器中完成,具体步骤如下:

展开数据库,右击数据库;任务收缩 → 单击文件

20220323

收缩操作文件界面,在收缩操作中,可选择释放未使用空间在释放未使用空间前重新组织页通过将数据迁移到同一文件组中的其他文件来清空文件,三选一来进行手动收缩文件操作;

到此这篇关于SQL Server 数据库之收缩数据库和文件的文章就介绍到这了,更多相关sqlserver收缩数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Sql Server中清空所有数据表中的记录

    Sql Server中清空所有数据表中的记录

    我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程
    2013-10-10
  • sql server学习基础之内存初探

    sql server学习基础之内存初探

    这篇文章主要给大家介绍了关于sql server中内存的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家学习或者理解sql server具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • SQL Server约束增强的两点建议

    SQL Server约束增强的两点建议

    我们可以在CHECK的约束条件中加入任何逻辑表达式,而目前所有外键只能用来验证一个或多个列的值是否相等。
    2009-05-05
  • SQL REGEXP 正则表达式详解

    SQL REGEXP 正则表达式详解

    SQL中的正则表达式(通常表示为REGEXP或RLIKE)是一种强大的模式匹配工具,允许你执行复杂的字符串搜索和匹配操作,本文给大家介绍SQL REGEXP 正则表达式的相关知识,感兴趣的朋友一起看看吧
    2025-04-04
  • sql server 累计求和实现代码

    sql server 累计求和实现代码

    这篇文章主要介绍了sql server 累计求和的实现代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • MSSQL存储过程的功能和用法详解

    MSSQL存储过程的功能和用法详解

    Microsoft SQL Server(MSSQL)是一个关系型数据库管理系统,它支持各种数据操作和查询功能,其中,存储过程是MSSQL中非常重要的一个功能,在这个章节中,我们将详细介绍MSSQL存储过程的功能和用法
    2023-12-12
  • 在 SQL 语句中处理 NULL 值的方法

    在 SQL 语句中处理 NULL 值的方法

    在日常开发过程中你深入了解过sql数据库中的null值问题吗?今天小编抽空给大家分享在 SQL 语句中处理 NULL 值的方法,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • sqlserver 支持定位当前页,自定义排序的分页SQL(拒绝动态SQL)

    sqlserver 支持定位当前页,自定义排序的分页SQL(拒绝动态SQL)

    sqlserver 支持定位当前页,自定义排序的分页SQL(拒绝动态SQL)
    2010-05-05
  • SQL Server阻止保存修改表结构的解决方法

    SQL Server阻止保存修改表结构的解决方法

    修改DeUser表中列的数据类型从varchar修改为int时,进行保存时弹出的提示框,阻止保存修改表结构,怎么办?这篇文章就为大家详细介绍了解决SQL Server阻止保存修改表结构问题的方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • MSSQL 首字母替换成大写字母

    MSSQL 首字母替换成大写字母

    MSSQL將首字母替換成大寫的实现语句,需要的朋友可以参考下。
    2009-09-09

最新评论