在SQL Server中缩小数据库

时间:2015-09-23 21:38:10

标签: sql-server size shrink

我有一个几乎已满的数据库,我们有一些选项可以解决这个问题:

  1. 我们可以增加db文件大小
  2. 缩小数据库
  3. 在我选择第一个选项之前,我想知道如何检查数据库大小以及实际存在多少数据,以便我可以缩小数据库以获得一些可用空间。

2 个答案:

答案 0 :(得分:1)

因此,请查看您有未使用空间的位置,使用以下查询的文件大小...

Use DatabaseName
GO

Select name                                             AS [FileName]
     , size/128.0                                       AS [FileSize(MB)]
     , fileproperty(name, 'SpaceUsed')/128.0            AS [Space_Used(MB)]
     , (size - fileproperty(name, 'SpaceUsed')) /128.0  AS [FreeSpace(MB)] 
From dbo.sysfiles
GO

最后,当您决定缩小具有大量可用空间的文件时,可以使用DBCC shrinkfile命令来执行此操作。

USE DatabaseName
GO
DBCC SHRINKFILE ('FileName', 10)   --<-- will shrink it to 10 MB
GO

注意

如果任何未使用的空间被BLOB数据类型(text,ntext,xml等)列占用,您可能无法声明回未使用的空间,除非您再次删除并重新创建表。

答案 1 :(得分:0)

您可以通过几种不同的方式获取此信息。在SSMS中,您可以右键单击数据库,选择属性并查看文件。您的数据和日志文件将显示一个“初始”值,表示大小。

您可以右键单击数据库,单击“任务”和“收缩”,然后单击“文件”,数据文件应显示为默认值。这将显示您的尺寸和可用空间。

您还可以运行一个脚本,显示数据库的所有大小和位置信息。您可以通过快速Google搜索找到几个。

此外,还有一些内置的SP可以为您提供所述信息here第四个查询特别显示了可用空间量。