您的位置:首页 > 数据库

SqlServer收缩数据库日志

2011-11-14 17:57 176 查看
USE [master]
GO

-- 收缩数据库
DECLARE @dbname nvarchar(255)
SET @dbname = '数据库名称'

-- 1.截断事务日志
EXEC('BACKUP LOG ['+@dbname+'] WITH NO_LOG')

-- 2.收缩数据库
EXEC('DBCC SHRINKDATABASE(['+@dbname+'], TRUNCATEONLY)')

-- 3.设定自动收缩
EXEC('EXEC SP_DBOPTION '''+@dbname+''', ''autoshrink'', ''TRUE''')

GO


DUMP TRANSACTION 和 BACK LOG 的区别:
DUMP TRANSACTION [数据库名称] WITH NO_LOG 是 sybase 的用法,SqlServer 的核心原来就是 sybase 的。因此 SqlServer 也能用 DUMP TRANSACTION。
BACK LOG [数据库名称] WITH NO_LOG 是 SqlServer 的用法。

DBCC SHRINKDATABASE 命令语法如下:(http://www.yesky.com/imagesnew/software/tsql/ts_dbcc_3pd1.htm)
DBCC SHRINKDATABASE (database_name
[, target_percent]
[, {NOTRUNCATE | TRUNCATEONLY}] )
各参数说明如下:
?target_percent 指定将数据库压缩后,未使用的空间占数据库大小的百分之几。如果指定的百分比过大,超过了压缩前未使用空间所占的比例,则数据库不会被压缩。并且压缩后的数据库不能比数据库初始设定的容量小。
?NOTRUECATE 将数据库缩减后剩余的空间保留在数据库,中不返还给操作系统 。如果不选择此选项,则剩余的空间返还给操作系统。
?TRUNCATEONLY 将数据库缩减后剩余的空间返还给操作系统。使用此命令时SQL Server 将文件缩减到最后一个文件分配,区域但不移动任何数据文件。选择此项后,target_percent 选项就无效了。例6-14: 压缩数据库mytest 的未使用空间为数据库大小的20%。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: