zoukankan      html  css  js  c++  java
  • 收缩SQL Server 数据库的几种方法

    方法一:

    Use 数据库名

    Select NAME,size From sys.database_files

    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT

    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE

    USE 数据库名

    DBCC SHRINKFILE(N’日志文件名’,0,TRUNCATEONLY)

    ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT

    ALTER DATABASE 数据库名 SET RECOVERY FULL

    方法二:

    backup log [你的数据库名称] WITH NO_LOG
    backup log [你的数据库名称] WITH TRUNCATE_ONLY
    DBCC SHRINKDATABASE([你的数据库名称])

    说明:

    backup log 指定仅备份事务日志。该日志是从上一次成功执行的 LOG 备份到当前日志的末尾。备份日志之后,可能会截断事务复制或活动事务不再需要的空间。

    NO_LOG | TRUNCATE_ONLY

    通过放弃活动日志以外的所有日志,无需备份复制日志即可删除不活动的日志部分,并截断日志。该选项会释放空间。因为并不保存日志备份,所以没有必要指定备份设备。NO_LOG 和 TRUNCATE_ONLY 是同义的。

    这里有个问题,什么是活动日志,微软的解释是:

    日志文件中从必须存在以确保数据库范围内成功回滚的第一条日志记录到最后写入的日志记录之间的部分称为日志的活动部分,即“活动日志”。这是进行数据库完整恢复所需的日志部分。永远不能截断活动日志的任何部分。

    DBCC SHRINKDATABASE 收缩特定数据库的所有数据和日志文件,这个是最简单的方法了,也可以使用。

    不过有个问题是:

    在一些对数据安全性要求不高,或者备份频率很高的情况下,使用直接截断日志的方法不如使用 简单恢复模式。微软说:在简单恢复模式下,在每个数据备份后事务日志将自动截断,也就是说,不活动的日志将被删除。因为经常会发生日志截断,所以没有事务日志备份。这简化了备份和还原。但是,没有事务日志备份,便不可能恢复到失败的时间点。

    也就是说:如果你不会使用日志来恢复数据(我自己不会用,我使用redgate 定时高频率备份),那么简单模式就是最佳的方案。

  • 相关阅读:
    python爬虫-selenium八大定位笔记
    git pull : error: cannot lock ref 'refs/remotes/origin/*' (unable to update local ref) 解决方案
    Lua table.sort()原理和使用的坑
    Unity---有关游戏物体角度的两种赋值方法这件事
    C# #if、#endif和预处理指令
    Unity 4大坐标系 和 屏幕坐标与UI坐标的转换问题
    第2次参加游戏开发比赛
    Unity Text添加空格导致换行问题的两种解决方法(还有lua的解决方法)
    MySQL是如何处理千万级数据
    PHP使用守护进程处理队列
  • 原文地址:https://www.cnblogs.com/168cuiyuan/p/4380361.html
Copyright © 2011-2022 走看看