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)

你可能感兴趣的:(sqlserver)