如何减少SQL Server中的表大小?

时间:2018-10-03 16:18:02

标签: sql sql-server ssms

我在Windows服务器上具有64位SQL Server 2016(v13.0.4001.0)。该数据库由7个表组成,其中6个表非常小(带有配置的几行)和一个包含数据的主表,未与其他表映射。

昨天我遇到了错误

  
      
  1. 无法为数据库'dbname'中的对象'dbo.table'。'PK_table'分配空间,因为'PRIMARY'文件组已满。
  2.   

因此,我正在寻找解决该问题的最简单方法(对此我是个新手,这将是找到简单解决方案的好方法。)

我的期望:我需要将db(或我的主表)的大小减小2-3 GB。这个地方足够我的应用程序工作1-2年。

我发现的选项:

  1. MS共享开发人员。版本的SQL Server https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-clean-db-free-space-transact-sql?view=sql-server-2017,并且没有10gb的限制。这有点困难,因为我必须在8台计算机上手动安装和设置它。我已经尝试过了,但这并不容易,因为我遇到了这个错误

  2. 使用收缩。我不能完全确定对主数据是否安全,因为我仅将其用于较早的日志。但据我所知,它对我有用,因为我的数据库可以工作数年,无需任何外部操作。我的意思是没有人使用它\清除它\等。

  3. 我也不确定,但是我发现了sp_clean_db_free_spacehttps://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-clean-db-free-space-transact-sql?view=sql-server-2017)。通过描述,我知道它可以用于我的问题。也许我错了。

关于我的主表:

exec sp_spaceused <table_name>

的结果

first

来自ssms的表的通用报告结果:

second

1 个答案:

答案 0 :(得分:0)

@SeanLange谢谢,您是对的。删除一些数据后,该文件夹中db的物理大小没有变化,但是异常消失了。因此,没有使用缩小和其他方法。但是psysicall分配的磁盘空间在尝试过程中让我有些困惑。