【万能的圈友】SQL Server 磁盘空间不足问题分析_工控

JZGKCHINA

工控技术分享平台


【万能的圈友】SQL Server 磁盘空间不足问题分析_数据库_02

技术交流与分享 是剑指工控全部的意义所在

不论你在哪里,不论你遇到怎样的技术问题,剑指工控群里总有那么一群带有工控情结的技术人与你一起面对,一起探讨......


不论你是菜鸟,不论你是高手,剑指工控群里总有那么一群带有工控情结的技术人与你共鸣,与你争执......


在工控技术这条寂寞又艰辛的征程中,有了剑指工控,我们不在孤军奋战,有了剑指工控,我们携手前行......


技术交流与分享

剑指工控全部的意义所在

我们愿做工控技术领域

万能朋友圈

我们也愿将点滴收获分享给更多的朋友

【万能的圈友】SQL Server 磁盘空间不足问题分析_sql_03



近期在剑指工控 “知识星球” 有朋友提问:

SQL Server 数据库提示存储空间不足


【万能的圈友】SQL Server 磁盘空间不足问题分析_数据库_04

那么我们来分析一下此问题,

并提出对应的解决方案。​​


SQL Server 的版本

关于此问题需要首先查看SQL Server 的版本,然后对应的来解决。

因为针对不同的 SQL Server 版本它的最大内存,数据库大小,CPU核心数使用都是有限制的,我们以 SQL Server 2017 为例:

【万能的圈友】SQL Server 磁盘空间不足问题分析_数据库_05

图1


从上图中可以看出不同的版本都是有区别的,如果你使用的是 免费的SQL Server Express 版本,那么它的最大数据库大小被限制为:10GB,也就是说当你的数据库存储的数据高于10GB的时候就不会再向数据库中存储数据了。如果是这种情况那么需要将数据库文件进行分离,备份,然后才可以继续存储。

关于如何分离,备份操作我们在下面会讲解。


如果不是使用的SQL Server Express 版本那么需要检查的内容较多,我们一步一步进行分析。


1、检查数据库文件所在磁盘是否存满


首先登陆SSMS(SQL Server Management Studio),选择数据库后,选择“属性”,然后选择“Files”,可以在”Path”中看到当前数据库文件的存储路径。那么我们就要检查 C 盘是否已经被存满,当然也有可能是其他盘。一般我们在建立数据库时,需要修改此处的存储路径。

【万能的圈友】SQL Server 磁盘空间不足问题分析_sql_06

图2


查看磁盘空间剩余大小可以使用 T-SQL 命令:

Exec master.dbo.xp_fixeddrives;


结果如下:

【万能的圈友】SQL Server 磁盘空间不足问题分析_工控_07

图3


2、检查数据库文件是否被限制大小:

按照第一步打开“Files”属性,在“Autogrowth/Maxsize”中检查下图中文件是否有“Limited to”的文字,如果有,那么有可能是对应的文件已经达到此大小,无法写入数据了。可以在第一步中查看对应的文件是否已经达到限制的大小。


【万能的圈友】SQL Server 磁盘空间不足问题分析_sql_08

图4


3、未限制,对数据库文件进行空间扩展:


重点:进行此操作前对数据库进行完整备份。

完整备份步骤:

1)选择需要备份的数据库,点击“Tasks(任务)---Back Up(备份)”

【万能的圈友】SQL Server 磁盘空间不足问题分析_工控_09

图5


2)选择备份类型为“完整”,选择备份路径到其他盘,文件名为:文件名.bak,参考下图

【万能的圈友】SQL Server 磁盘空间不足问题分析_数据库_10

图6


【万能的圈友】SQL Server 磁盘空间不足问题分析_数据库_11

图7


完成备份后就是进行空间扩展

如果是磁盘空间不足,且不想增加硬盘,如果以前的数据不需要查看,可以将当前的数据库删除,或者表删除,然后新建数据库,万事大吉,非常清爽。不过这种情况是不可能的

【万能的圈友】SQL Server 磁盘空间不足问题分析_工控_12

请看下一步

【万能的圈友】SQL Server 磁盘空间不足问题分析_sql_13

如果磁盘空间不足,可以增加磁盘,那么有两种方法

  • 需要中断当前业务,对数据库进行分离/附加操作,具体步骤:

a、对数据库进行分离分离数据库就是将某个数据库从SQL Server数据库列表中删除,使其不再被SQL Server管理和使用,但该数据库的文件(.MDF)和对应的日志文件(.LDF)完好无损。分离成功后,就可以把该数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘中保存。


a.1 分离之前,设置数据库为单个用户,并记住该数据库所在路径。

【万能的圈友】SQL Server 磁盘空间不足问题分析_数据库_14

图8


a.2 数据库分离,选择需要分离数据库,然后选择“Tasks(任务)---Detach(分离)”,然后分离数据库页面选中“更新统计信息”复选框。若“消息”列中没有显示存在活动连接,则“状态”列显示为“就绪”;否则显示“未就绪”,此时必须勾选“删除连接”列的复选框。分离后资源管理器中数据库消失。


【万能的圈友】SQL Server 磁盘空间不足问题分析_sql_15

图9


【万能的圈友】SQL Server 磁盘空间不足问题分析_工控_16

图10


a.3数据库分离后拷贝到其他大容量的磁盘,然后进行数据库的附加,在数据库上右键,选择“Attach(附加)”,在弹出的画面点击“添加”,找到存储刚才分离后的文件的路径,选择其中的后缀名称是” .mdf ”文件,附加后检查文件的路径是否正确。可以修改。

【万能的圈友】SQL Server 磁盘空间不足问题分析_工控_17

图11


【万能的圈友】SQL Server 磁盘空间不足问题分析_sql_18图12


【万能的圈友】SQL Server 磁盘空间不足问题分析_工控_19

图13


以上步骤就可以实现将现有的数据库文件转移到大容量的磁盘的方法。


而对于无需中断当前业务,对数据库进行扩展操作,以及在数据库被限制大小的情况如何对数据库进行扩展请关注剑指工控 “知识星球“,我们会有更加详细的讲解和操作方法。