首页 > 代码库 > sql server 数据库收缩

sql server 数据库收缩

限制和局限

  • 收缩后的数据库不能小于数据库的最小大小。 最小大小是在数据库最初创建时指定的大小,或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大小。 例如,如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。

  • 不能在备份数据库时收缩数据库。 反之,也不能在数据库执行收缩操作时备份数据库。

  • 遇到 xVelocity 内存优化的列存储索引时,DBCC SHRINKDATABASE 将会失败。 遇到 columnstore 索引之前完成的工作将会成功,因此数据库可能会较小。 若要完成 DBCC SHRINKDATABASE,请在执行 DBCC SHRINKDATABASE 前禁用所有列存储索引,然后重新生成列存储索引。

建议

  • 若要查看数据库中当前的可用(未分配)空间量。 有关详细信息,请参阅 Display Data and Log Space Information for a Database

  • 当您计划收缩数据库时,请考虑以下信息:

    • 在执行会产生许多未使用空间的操作(如截断表或删除表操作)后,执行收缩操作最有效。

    • 大多数数据库都需要一些可用空间,以供常规日常操作使用。 如果反复收缩数据库并注意到数据库大小变大,则表明收缩的空间是常规操作所必需的。 在这种情况下,反复收缩数据库是一种无谓的操作。

    • 收缩操作不会保留数据库中索引的碎片状态,通常还会在一定程度上增加碎片。 这是不要反复收缩数据库的另一个原因。

    • 除非有特定要求,否则不要将 AUTO_SHRINK 数据库选项设置为 ON。

安全性

权限

要求具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。

sql server 数据库收缩