SQL 2005 日志压缩

来源:互联网 发布:新疆网络本土歌曲 编辑:程序博客网 时间:2024/05/19 10:35

方法一:

第1步.清空日志

DUMP TRANSACTION [DB_Name] WITH NO_LOG

或者

 

截断事务日志:

BACKUP LOG [DB_Name] WITH NO_LOG

第2步.收缩数据库文件

右键你要压缩的数据库--所有任务--收缩数据库--收缩文件...

Optional: 设置自动收缩,
   企业管理器——服务器——右键数据库——属性——选项——选择"自动收缩"
  
   SQL语句设置方式:
   EXEC sp_dboption '库名', 'autoshrink', 'TRUE'

 

方法二:压缩实例下所有数据库文件及日志文件 语句

--01.get all database name
SELECT DBNAME   = DB_NAME(s_mf.database_id)    INTO #DN
    
FROM

        sys.master_files s_mf
    
WHERE
        s_mf.state 
= 0 and -- ONLINE
        HAS_DBACCESS(DB_NAME(s_mf.database_id)) = 1 -- Only look at databases to which we have access
    GROUP BY s_mf.database_id
    
ORDER BY 1

--02.use cursor to fetch db name
--
---02.01 declare cursor
DECLARE cur CURSOR FOR 
SELECT DBNAME FROM
 #DN

-----02.02 open cursor & declare var

OPEN cur
DECLARE @DbName VARCHAR(200
)
-----02.03 loop db bane
FETCH NEXT FROM cur into @DbName
WHILE(@@FETCH_STATUS=0)
  
BEGIN

        
print 'shrinking ' + @DbName + ' ...'
-------02.04 only shink log file

        
exec(
            
'

                declare @dn varchar(200);
                declare @ln varchar(210);
                select @dn = name from  
'+@DbName+'.dbo.sysfiles where fileid=1 
                select @ln = name from  
'+@DbName+'
.dbo.sysfiles where fileid=2 
                use [
'+ @DbName + '] backup log ['+ @DbName +'
] with no_log dbcc shrinkfile (@ln)
            
'

            )

-------02.04 shink db file & log file
    --  dbcc SHRINKDATABASE (@DbName)
        print @DbName + ' done'
      
FETCH NEXT FROM cur INTO @DbName
  
END
-----02.05 colse cursor
CLOSE cur
DEALLOCATE
 cur
-----03.drop temp table

DROP TABLE #DN

From:http://www.cnblogs.com/rickel/archive/2008/10/07/1305521.html

http://hi.baidu.com/liufan2000/blog/item/d5e62f89a45621b50f24445c.html

 

 

方法三:

如果以后,不想要它变大。
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter database 数据库名 set recovery simple

 

原创粉丝点击