近期,因磁盘空间问题,当执行常规性维护如碎片整理等后会报磁盘空间不足警告,因条件又无法及时添加磁盘空间,这时候不得不对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.

批量Shink所有日志或数据文件的更多相关文章

  1. Mysql 数据库日志与数据文件分开

    参考:https://blog.csdn.net/jiao_fuyou/article/details/78366621 myql默认配置情况下,二进制日志文件是保存在默认的数据目录 data 下,如 ...

  2. oracle 普通数据文件备份与恢复

    普通数据文件指:非system表空间.undo_tablespace表空间.临时表空间和只读表空间的数据文件.它们损坏导致用户数据不能访问,不会导致db自身异常.实例崩溃.数据库不恢复就无法启动的情况 ...

  3. 批量迁移Oracle数据文件,日志文件及控制文件

    有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当 ...

  4. ORACLE 移动数据文件 控制文件 重做日志文件

    ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前 ...

  5. 数据文件 和日志文件 收缩 Sql Server

    A. 将数据文件收缩到指定的目标大小 以下示例将 UserDB 用户数据库中名为 DataFile1 的数据文件的大小收缩到 7 MB. 复制 USE UserDB; GO DBCC SHRINKFI ...

  6. ORACLE查看数据文件-控制文件-日志文件-表空间信息

    1.查看当前数据库中的所有用户:select username from dba_users; 2.查看当前会话登录的用户:show user或select username from user_us ...

  7. 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

    一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE ...

  8. SQLSERVER手动增长日志文件和数据文件

    原文:SQLSERVER手动增长日志文件和数据文件 SQLSERVER手动增长日志文件和数据文件 手动增长日志文件,实际上就是修改日志文件的大小  size 的单位是MB 下面设置日志文件大小是204 ...

  9. rabbitmq更换数据文件和日志文件的存放位置

    原来的默认位置是/var下 需要将这些文件更换位置 1.先创建数据文件和日志文件存放位置的目录并给权限 mkdir -p /usr/local/rabbitmq/mnesia mkdir -p /us ...

随机推荐

  1. Java 8 的 Nashorn 脚本引擎教程

    本文为了解所有关于 Nashorn JavaScript 引擎易于理解的代码例子. Nashorn JavaScript 引擎是Java SE 8的一部分,它与其它像Google V8 (它是Goog ...

  2. 基于SignalR实现B/S系统对windows服务运行状态的监测

    通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windows服务肯定是必不可少的,我们还需要利用B/S与windows服务进 ...

  3. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  4. MJRefresh 源码解读 + 使用

    MJRefresh这个刷新控件是一款非常好用的框架,我们在使用一个框架的同时,最好能了解下它的实现原理,不管是根据业务要求在原有的基础上修改代码,还是其他的目的,弄明白作者的思路和代码风格,会受益匪浅 ...

  5. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  6. iOS之应用版本号的设置规则

    版本号的格式:v<主版本号>.<副版本号>.<发布号>  版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1.  产品的主体构件进 ...

  7. Android 中的mvvm

    我们来了解一下MVVM模式与Databinding ,MVVM是一种模式,Databinding 是一种框架.DataBinding是一个实现数据和UI绑定的框架.而ViewModel和View可以通 ...

  8. Android Weekly Notes Issue #235

    Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...

  9. sql server 取文件名函数 转载

    /****** Object: UserDefinedFunction [dbo].[GetDirectoryPath] Script Date: 2016-12-16 16:54:05 ****** ...

  10. Linux监控工具介绍系列——OSWatcher Black Box

      OSWatcher Balck Box简介 OSWatcher Black Box (oswbb)是Oracle开发.提供的一个小巧,但是实用.强大的系统工具,它可以用来抓取操作系统的性能指标,用 ...