收缩数据库概述:
收缩 数据库 是非常耗费server性能的操作,如果没有必要不要收缩
go
收缩 无非就是把已经分配给数据库文件空间收回来,但是,收缩的时候 要移动数据页,而且可能造成大量的碎片,影响性能。
go
日志收缩和数据文件收缩不一样,日志中的虚拟文件状态 只有 在可复用 时候 才能收缩。
而且 凡是有活动的日志的日志虚拟文件都是活动的不能收缩。
go
收缩日志概述:
日志文件收缩, 回收磁盘空间。
数据文件 根据设计 设计的大小,一般情况不用收缩,收缩可能带来性能的问题。
日志
如果 选择的日志恢复模型是完全,如果没有日志截断,日志增长的很大,
建议
备份日志。
backup log db to disk='备份设备'
截断日志
backup log db with no_log
然后收缩。
dbcc shrinkfile(2,10)
--===================================DB_Tank
USE [master]
GO
ALTER DATABASE [DB_Tank] SET RECOVERY SIMPLE WITH NO_WAIT
GO
EXEC('
USE [Db_Tank]
DBCC SHRINKFILE (''Db_Tank_Log'' , 2048) --sql server默认文件单位为M,所以这里是2G
')
print '【'+CONVERT(varchar(20),GETDATE(),120)+'】恢复游戏库模式'
GO
USE [master]
GO
ALTER DATABASE [Db_Tank] SET RECOVERY BULK_LOGGED WITH NO_WAIT
GO
--====================================DB_logs
USE [master]
GO
ALTER DATABASE [DB_logs] SET RECOVERY SIMPLE WITH NO_WAIT
GO
EXEC('
USE [Db_logs]
DBCC SHRINKFILE (''Db_Logs_Log'' , 2048)
')
print '【'+CONVERT(varchar(20),GETDATE(),120)+'】恢复游戏库模式'
GO
USE [master]
GO
ALTER DATABASE [Db_Logs] SET RECOVERY BULK_LOGGED WITH NO_WAIT
GO
--=======================================系统日志
/*
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG
里面的 ERRORLOG.1 错误日志很大,轮转掉它
sp_cycle_errorlog -手动启动轮转系统日志的sp
*/
/*
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
tempdb 磁盘收缩
*/
--======================================tempdb
USE [tempdb]
GO
DBCC SHRINKFILE (N'templog' , 1024)
GO
USE [master]
GO
print '【'+CONVERT(varchar(20),GETDATE(),120)+'】收缩日志成功'
GO
print '【'+CONVERT(varchar(20),GETDATE(),120)+'】正在收缩数据库'
GO
DBCC SHRINKDATABASE(tempdb)
GO
print '【'+CONVERT(varchar(20),GETDATE(),120)+'】收缩数据库成功'