【问题标题】:Sql Server Express db size limitSql Server Express 数据库大小限制
【发布时间】:2014-06-02 15:44:23
【问题描述】:

查看我们的一个数据库后,如果我达到了 sql express db 的限制,我会感到困惑。该数据库是使用 sql server express 2005 创建的,但后来迁移到 express 2008 r2。我知道,截至 2008 年,数据库有 10gb 的限制,但这是否意味着数据库必须在 2008 年创建,或者当我迁移它时,它获得了 5gb 的额外空间。

相关数据库的属性窗口。

sp_spaceused 查询

我可以做些什么来释放空间。我在 SSMS 向导中运行了 shrink db,但它似乎没有释放任何空间。

【问题讨论】:

  • 您是否有任何警告或什么让您认为您的空间不足?
  • 归档旧数据,或者只是为 sql server 付费?
  • 从 SQL Server 2008 R2 Express 开始,限制增加到 10 GB(不是 2008!)
  • 这是 DATABASE 限制,而不是 LOG 限制 - 如果您使用不当,LOG 可能会增长到 TB,并通过备份或正确的备份模型删除数据。

标签: sql sql-server sql-server-2008


【解决方案1】:

您有一个 4750 MB 的数据库,其中 4580 MB 用于事务日志,其使用率超过 98%。您有一个巨大的未提交查询,或者您有完整备份恢复模型并且您没有备份您的日志。

在 Management Studio 中右键单击数据库并打开属性。选择“文件”——我猜事务日志的大小比数据库文件大得多。

选择“选项”。看看有什么恢复模式。将其切换为简单,一段时间后另一个 DBCC SHRINKDATABASE 应该释放日志空间。

【讨论】:

  • 这意味着:您的数据库很小 - 不到 200 兆字节。只是处理事务日志的粗心导致它不成比例地运行 - 并且 Tx 日志不是数据库大小限制的一部分;)
  • 请注意,如果您切换到简单恢复,您将无法进行时间点恢复。如果您需要能够进行时间点恢复,您也可以只增加事务日志备份的数量。
【解决方案2】:

您可以随时使用SHRINKFILE 截断日志文件,我相信它会释放足够的空间,因此您不必担心。

例子:

USE [dbname]
BACKUP LOG [dbname] WITH TRUNCATE_ONLY

DECLARE @InternalLogName VARCHAR(64)
SELECT TOP 1 @InternalLogName = RTRIM(LTRIM(name)) FROM sysfiles WHERE groupid = 0
DBCC SHRINKFILE (@InternalLogName)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多