SQLServer收缩和删除日志
-----------------收缩数据库的方法--------------------
(SQL2005)
DECLARE @DBName AS sysname
SET @DBNname = N'数据库名称l'--1.清空日志
exec('DUMP TRANSACTION ['+@DBNname +'] WITH NO_LOG')--2.截断事务日志:
exec('BACKUP LOG ['+@DBNname +'] WITH NO_LOG')--3.收缩数据库文件
exec('DBCC SHRINKDATABASE(['+@DBNname +'])')--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)--4.设置自动收缩
exec('EXEC sp_dboption '''+@DBName+''',''autoshrink'',''TRUE''')------------------------------------------------------------------------
(SQL2008)
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式
GO
USE DNName
GO
DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL --还原为完全模式
GO
-----------------删除数据库日志文件方法---------------------
1、分离数据库:
企业管理器--服务器--数据库--右键--分离数据库
2、在我的电脑中删除LOG文件
3、附加数据库:
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K或用代码:
1、分离
EXEC sp_detach_db @DBNname = '数据库名'
2、删除日志文件
3、再附加
EXEC sp_attach_single_file_db @DBNname = '数据库名'
@physname = 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\数据库名.mdf'
-----------------删设置数据库日志文件大小方法---------------------
如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:
Alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)