在服务器运维活动中,我们经常需要做一项工具就是将好多年的用户数据库日志文件截断并收缩为最小,以节省大量的磁盘空间。当数据库只有一两个时可以手动操作,但数据库数量众多时,就需要采用sql脚本,批量化执行这个过程。

本人写了一段这样的脚本。并且经过验证执行无误。现在分享出来,您也可以执行以下sql脚本来一次将所有用户数据库的日志进行截断并收缩。

--截断和收缩所有用户数据库日志。用游标循环所有正常状态的用户数据库,并且截断和收缩数据库日志文件
declare @tempDbName varchar(64)
declare cursorP cursor for select [name] from sysdatabases where status=65536 --and [name] in('userDb02','userDb01')
open cursorP
while @@FETCH_STATUS=0
begin
print @tempDbName
declare @dbName varchar(64)
declare @dbLogName varchar(64)
set @dbName = @tempDbName
set @dbLogName = @dbName+'_log' --如果数据库文件逻辑名和物理名不一致,则改
declare @logicName varchar(64)
SELECT top 1 @logicName=name from sys.master_files WHERE database_id=db_id(@dbName);
--print @logicName
if(@logicName!=@dbName)
begin
--print('alter database '+@dbName+' modify file(name='''+@logicName+''', newname='''+@dbName+''');')
--print('alter database '+@dbName+' modify file(name='''+@logicName+'_log'', newname='''+@dbName+'_log'');')
exec('alter database '+@dbName+' modify file(name='''+@logicName+''', newname='''+@dbName+''');')
exec('alter database '+@dbName+' modify file(name='''+@logicName+'_log'', newname='''+@dbName+'_log'');')
end declare @breakLogSqlstr varchar(max)
set @breakLogSqlstr ='
USE '+@dbName+'
ALTER DATABASE '+@dbName+' SET RECOVERY SIMPLE --将“恢复模式”设置为“简单
DBCC SHRINKFILE (N'''+@dbLogName+''' , 1, TRUNCATEONLY)--收缩日志文件大小到1M
ALTER DATABASE '+@dbName+' SET RECOVERY FULL WITH NO_WAIT ----将“恢复模式”设置为“完整”
ALTER DATABASE '+@dbName+' SET RECOVERY FULL
'
--print @breakLogSqlstr
exec (@breakLogSqlstr);
fetch next from cursorP into @tempDbName
end
close cursorP
DeAllocate cursorP

sql server 截断和收缩所有用户数据库日志--用游标循环所有正常状态的用户数据库的更多相关文章

  1. SQL Server 合并复制如何把备份的发布端或订阅端BAK文件还原为数据库

    SQL Server的合并复制,是可以备份发布端和订阅端数据库为BAK文件的,但是问题是合并复制在数据库中自动创建的系统表.触发器.表中的RowGuid列等也会被一起备份. 这里我们举个例子,下面图中 ...

  2. SQL Server 2008 中收缩数据库(DUMP,TRANSACTION,TRAN,无效,语法错误)

    从SQL SERVER 2008 开始,我们已经不能再用以前 DUMP TRAN 数据库名 WITH NO_LOG 的这种方式来收缩数据库,但是,可以用另外一种替代的方法,SQL语句如下: ALTER ...

  3. sql server 2012 如何收缩事务日志

    sql2008不再支持 BACKUP LOG 数据库名 WITH NO_LOG   语句 BACKUP Log zxta with no_log 截断事务日志 sql2008 提示错误如下 BACKU ...

  4. SQL Server:“数据收缩”详解

    1. 数据库的相关属性 在MS中创建数据库时会为数据库分配初始的大小(如下图:数据库和日志两个文件),随着数据库的使用文件会逐渐增大.数据库文件大小的增加有两种方式: 自动增长:在自动增长中可以设置每 ...

  5. sql server 2000 自动收缩数据库大小

    转载.......http://mars968.blog.163.com/blog/static/7400033200941642356258/ SQLServer2000压缩日志及数据库文件     ...

  6. SQL SERVER 截断大日志文件

    1.改成完整模式下,先完整备份,然后只备份事务日志2. 改成简单模式,然后截断(运行下边示例代码)3.再备份事务日志(观察LDF文件有没有变小)-----收缩大日志  SELECT * FROM sy ...

  7. SQL Server如何截断(Truncate)和收缩(Shrink)事务日志

    当SQL Server截断事务日志时,它仅仅是在虚拟日志文件中做个标记,以便不再使用它,然后准备以重用形式来做备份(假如运载在完整或是批量日志恢复模型).也就是说,在使用简单恢复模型时,事务日志包括如 ...

  8. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...

  9. SQL SERVER数据库删除LOG文件和清空日志的方案

    原文:SQL SERVER数据库删除LOG文件和清空日志的方案 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文 ...

  10. [转]SQL SERVER数据库删除LOG文件和清空日志的方案

    本文转自:https://www.cnblogs.com/ShaYeBlog/archive/2012/09/04/2670505.html 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下 ...

随机推荐

  1. Solon v2.4.0 发布,Java 生态的新星燃起

    Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢 ...

  2. OO第一次大作业

    前言 前言的前言 这是我的第一篇blog,有点小激动,我还找教程设置了一下我的背景,本来还想弄个页面小宠物,但是看了一下感觉有点复杂,下次一定.如果对我blog的内容有任何修正或者建议可以评论让我知道 ...

  3. org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://localhost:9000/usr/local/spark/zytdemo

    意思说在 hdfs://localhost:9000/usr/local/spark/zytdemo找不到响应的文件,我们可以分析的得到他并不是加载本地文件,而是区hdfs上查找. 这是由于我们在之前 ...

  4. Anaconda 使用时,conda activate 失败

    今天使用一台电脑上新安装的 anaconda 时,运行 conda activate, 出现如下报错: 错误提示中,说要把 . C:\ProgramData\Anaconda3\etc\profile ...

  5. 提示工程101|与 AI 交谈的技巧和艺术

    随着 ChatGPT 的问世,人工智能(AI)新时代也正式开启.ChatGPT 是一种语言模型.它与用户进行对话交互,以便用户输入问题或提示,模型响应,然后对话可以继续来回进行,类似于在消息传递应用程 ...

  6. 我通过 tensorflow 预测了博客的粉丝数

    前言: 由于最近接触了 tensorflow.js,出于试一下的心态,想通过线性回归预测一下博客的粉丝走向和数量,结果翻车了.虽然场景用错地方,但是整个实战方法用在身高体重等方面的预测还是有可行性,所 ...

  7. C++类学习心得

    参考文献:https://www.cnblogs.com/xiongxuanwen/p/4290086.html 类的一个重要点是构造函数,其官方说明为: 构造函数是一个特殊的.与类同名的成员函数,用 ...

  8. 浏览器Xbox 云游戏教程

    我这里使用的是韩国的地方因为延迟和网速会比较快 Xbox 云游戏韩国网站 Xbox.com에서 Xbox Cloud Gaming(베타) 首先插件商店下载一个油猴插件 在系统语言和时区改为韩国 在  ...

  9. IDApython的学习

    IDApython的学习 我的IDA情况:IDA7.7,idapython3.8 这个可以作为文件导入和命令行内输入,我一般习惯命令行 这里要注意是python不是IDC 访问原数据 idc.get_ ...

  10. MySQL面试题全解析:准备面试所需的关键知识点和实战经验

    MySQL有哪几种数据存储引擎?有什么区别? MySQL支持多种数据存储引擎,其中最常见的是MyISAM和InnoDB引擎.可以通过使用"show engines"命令查看MySQ ...