zoukankan      html  css  js  c++  java
  • 批量Shink所有日志或数据文件

    近期,因磁盘空间问题,当执行常规性维护如碎片整理等后会报磁盘空间不足警告,因条件又无法及时添加磁盘空间,这时候不得不对LOG文件做收缩,如果遇到库比较多的实例上,一个一个来却是比较麻烦,可通过如下SQL来处理:

    ---定义变量

    DECLARE @DBName AS NVARCHAR(100)

    DECLARE @LogFileName AS NVARCHAR(100)

    DECLARE @exec_stmt nvarchar(625)

     --创建临时表来保存日志文件名 

    CREATE TABLE #logfiles

    (

     dbname NVARCHAR(100), [filename] NVARCHAR(100),

    )

     --排除系统数据库

    DECLARE curDBName CURSOR FOR

    SELECT [name] FROM sys.databases

    WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')

     AND state_desc = 'ONLINE'

    --逐一读取文件列表名字到游标中

    OPEN curDBName

    FETCH NEXT FROM curDBName INTO @DBName

    WHILE @@FETCH_STATUS = 0

    BEGIN

    SELECT @exec_stmt = 'INSERT INTO #logfiles

             SELECT ''' + @DBName + ''' , name FROM ' + quotename(@DBName, N'[') + N'.dbo.sysfiles

             WHERE groupid = 0'

    EXECUTE (@exec_stmt)

    FETCH NEXT FROM curDBName INTO @DBName

    END

    CLOSE curDBName

    DEALLOCATE curDBName

    --选择所有log文件名

    DECLARE curLogName CURSOR FOR

    SELECT dbname, [filename] FROM #logfiles

    --开始shrink每一个Log文件

    OPEN curLogName

    FETCH NEXT FROM curLogName INTO @DBName, @LogFileName

    WHILE @@FETCH_STATUS = 0

    BEGIN

     SELECT @exec_stmt = ' USE ' + quotename(@DBName, N'[') +

            N' CHECKPOINT ' +

            N' BACKUP LOG ' + quotename(@DBName, N'[') + ' WITH NO_LOG ' +

            N' DBCC SHRINKFILE (' + quotename(@LogFileName, N'[') + N', 0, TRUNCATEONLY)'

    SELECT (@exec_stmt)  

    --EXECUTE (@exec_stmt)

      

     FETCH NEXT FROM curLogName INTO @DBName, @LogFileName

    END

    CLOSE curLogName

    DEALLOCATE curLogName

    --清除临时表 

    DROP TABLE #logfiles

    sa.

  • 相关阅读:
    Javascript面向对象(三):非构造函数的继承
    Javascript面向对象(二):构造函数的继承
    Javascript 面向对象(一):封装
    .NET面试题系列[12]
    .NET面试题系列[11]
    .NET面试题系列[10]
    .NET面试题系列[9]
    .NET面试题系列[8]
    .NET面试题系列[7]
    .NET面试题系列[6]
  • 原文地址:https://www.cnblogs.com/SameZhao/p/4662741.html
Copyright © 2011-2022 走看看