批量清除SQL Server日志(SQL版)

/*************************************************************/
/**        功能:清除指定数据库的LOG日志以节约磁盘空间            **/
/**        参数说明:@Dname为指定的数据库名称, 传''则表示全部   **/
/**        日期:20080312                                        **/ 
/**        创建:ChengJie                                        **/
/*************************************************************/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[ClrLog]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    
DROP PROCEDURE [dbo].ClrLog
GO

CREATE PROCEDURE ClrLog
    
@Dname varchar(50)  
AS
DECLARE
    
@name varchar(50)
BEGIN
    
IF (@Dname = '')
    
BEGIN
        
DECLARE DataName CURSOR FOR
        
SELECT name FROM sysdatabases WHERE name not in ('master''model''msdb''tempdb')

        
OPEN DataName

        
FETCH NEXT FROM DataName
        
INTO @name

        
WHILE (@@FETCH_STATUS = 0)
        
BEGIN   
            
BACKUP LOG @name WITH truncate_only 
            
DBCC shrinkdatabase (@name)
                         
            
FETCH NEXT FROM DataName 
            
INTO @name
        
END

        
CLOSE DataName
        
DEALLOCATE DataName
    
END
    
ELSE
    
BEGIN
        
IF EXISTS (SELECT name FROM sysdatabases WHERE name not in ('master''model''msdb''tempdb'AND name=@Dname)
        
BEGIN
            
BACKUP LOG @Dname WITH truncate_only 
            
DBCC shrinkdatabase (@Dname)
        
END
    
END
END

GO
EXEC ClrLog ''
posted @ 2008-08-08 13:14  威尼斯的夏天  阅读(191)  评论(0编辑  收藏  举报