0%

压缩mssql数据日志文件 shrink mssql log db file

注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤,否则可能损坏数据库,
以库名www为例, 若不压缩库, 数据库的文件不会减小。

压缩日志文件

清空日志

1
2
3
4
# 清空日志
DUMP TRANSACTION www WITH NO_LOG
# 截断事务日志
BACKUP LOG www WITH NO_LOG

收缩数据库

图形界面

企业管理器->右键你要收缩的数据库->所有任务->收缩数据库->收缩文件(XXM: 允许收缩到的文件M数)

  • 选择日志文件->选择收缩至XXM,确定
  • 选择数据文件->选择收缩至XXM,确定
    如上操作www库后,几G的日志文件变为1M大小:)

SQL语句

1
2
3
DBCC SHRINKDATABASE www
DBCC SHRINKFILE(1) #1:通过以下语句查询到的文件号
select * from sysfiles

分离旧的大日志文件,创建新的最小化的日志文件

查询分析器界面操作

  • 分离数据库:企业管理器->服务器->数据库->右键->分离数据库
  • 在我的电脑中删除LOG文件
  • 附加数据库:企业管理器->服务器->数据库->右键->附加数据库
    如上操作后,生成新的LOG文件更小。

SQL语句

分离www日志,将www中的一个文件附加到当前服务器。

1
2
3
4
# 分离,并删除日志文件
EXEC sp_detach_db @dbname='www'
# 附加库,并创建新的日志文件
EXEC sp_attach_single_file_db @dbname='www', @physname='c:\\path\to\www.mdf'

库收缩和日志增长的自动设置

库自动压缩设置

1
2
3
4
# 界面操作
企业管理器->服务器->右键数据库->属性->选项->选择"自动收缩"
# SQL语句
EXEC sp_dboption 库名, autoshrink, TRUE

日志增长限制设置

1
2
3
4
# 界面操作
企业管理器->服务器->右键数据库->属性->事务日志,将文件增长限制为(xx)M大小。
# SQL语句
alter database 库名 modify file (name=原逻辑文件名, maxsize=10)