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.

  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/SameZhao/p/4662741.html
Copyright © 2011-2022 走看看