zoukankan      html  css  js  c++  java
  • SQL Server 自动增长过大

    一、背景

    我们遇到的问题如下图所示:自动增长无端端就按照这样的比例进行增长;

    image

    (Figure1:问题所在)

    尝试使用SSMS修改自动增长值,就会出现下面的错误:

    image

    (Figure2:错误信息)

    遇到上面的问题,我们需要解决两个问题:

    1. 把数据文件收缩到一定范围内的值,腾出磁盘空间;

    2. 重新设置自动增长的值,可以按照百分比,也可以使用指定的空间大小,我个人倾向使用n*1024M这样的值,仅供参考;

    3. 如果有需要你也可以进行日志文件的收缩;

    二、解决过程

    1. 使用下面的脚本修改自动增长的值:

    --1024
    ALTER DATABASE [DataBaseName]
    MODIFY FILE ( NAME = N'FileName', FILEGROWTH = 1024MB )
    GO

    image

    (图3:效果)

    上面是执行了按照1024MB的空间执行的效果,如果你想用百分比的可以使用下面的SQL:

    --10%
    ALTER DATABASE [DataBaseName]
    MODIFY FILE ( NAME = N'FileName', FILEGROWTH = 10%)
    GO

    2. 使用下面的脚本收缩数据:(默认是是以MB作为单位的)

    --12000MB
    USE [DataBaseName]
    GO
    DBCC SHRINKFILE (N'FileName' , 12000)
    GO

    image

    (Figure4:效果)

    image

    (Figure5:效果)

    3. 如果有需要你也可以进行日志文件的收缩:(需要简单模式,如果在完整模式下,你需要进行的是日志文件的备份)

    --sql server 2005
    BACKUP LOG [DataBaseName] WITH NO_LOG
    DBCC SHRINKDATABASE ([DataBaseName],TRUNCATEONLY)
    
    --sql server 2008
    ALTER DATABASE [DataBaseName] SET RECOVERY SIMPLE
    GO
    -- 收缩
    DBCC SHRINKFILE (2,30)  --30单位为M,日志文件的大小
    GO 
    -- 更改模式为FULL ,再改回来,如果本身就已是simple,那就不必要了
    ALTER DATABASE [DataBaseName] SET RECOVERY FULL
    GO

    三、参考文献

    sql server 2008收缩数据库日志

  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/gaizai/p/3242857.html
Copyright © 2011-2022 走看看