删除指定数据库日志,可循环执行,清空Tempdb数据库

ALTER proc [dbo].[SYS_DB_Delete_Log]
(
 @DBName varchar(50)
)
as
-- 删除数据库日志
--Create by HDL 20141217
-- 用于将数据库日志文件删除重新创建
-- SYS_DB_Delete_Log ‘ImportDB‘
-- update by hdl 20170928 处理删除日志后还原成原来模式
--update by hdl 20191209 修改处理TempDb
begin

/*
use Z3
declare @ExecAll varchar(max)
select @ExecAll=ISNULL(@ExecAll+‘‘,‘‘)+‘exec SYS_DB_Delete_Log ‘+ name +‘
‘ from sys.databases where database_id>4 and state_desc=‘ONLINE‘
--print @ExecAll
exec (@ExecAll)

USE [tempdb]
GO
DBCC FREESYSTEMCACHE (‘ALL‘)
GO
DBCC SHRINKFILE (N‘tempdev‘ , 500)
GO

*/

--在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。

--declare @DBName varchar(50)
--set @DBName=‘HRP01‘

declare @LogName varchar(50)
declare @execsql nvarchar(max),@ParaList nvarchar(500)

set @execsql=‘
 SELECT @LName= name FROM [‘+@DBName+‘].sys.database_files where type_desc=‘‘LOG‘‘
 ‘
set @ParaList=‘@LName varchar(50) output‘
exec sp_executesql @execsql,@ParaList,@LName=@LogName output

--print @LogName

DECLARE @DefModel VARCHAR(100) --‘SIMPLE‘
SET @DefModel=(SELECT recovery_model_desc FROM sys.databases WHERE name =@DBName)
set @execsql=‘
 SELECT * FROM [‘+@DBName+‘].sys.database_files 

USE [master]
ALTER DATABASE [‘+@DBName+‘] SET RECOVERY SIMPLE WITH NO_WAIT
ALTER DATABASE [‘+@DBName+‘] SET RECOVERY SIMPLE --简单模式
USE [‘+@DBName+‘]
DBCC SHRINKFILE (N‘‘‘+@LogName+‘‘‘ , 11, TRUNCATEONLY)
 --这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询
USE [master]
ALTER DATABASE [‘+@DBName+‘] SET RECOVERY ‘+@DefModel+‘ WITH NO_WAIT
ALTER DATABASE [‘+@DBName+‘] SET RECOVERY ‘+@DefModel+‘ --还原为完全模式

‘
SET @execsql=@execsql+ ‘SELECT * FROM [‘+@DBName+‘].sys.database_files ‘

--print (@execsql)
exec (@execsql)

end
GO

原文地址:https://www.cnblogs.com/hdl217/p/12010027.html

时间: 2024-11-06 11:59:49

删除指定数据库日志,可循环执行,清空Tempdb数据库的相关文章

[转]Oracle DB执行闪回数据库

? 配置闪回数据库 ? 执行闪回数据库操作 ? 监视闪回数据库 闪回数据库 闪回数据库操作: ? 作用类似于数据库的倒带按钮 ? 可以在用户造成了逻辑数据损坏的情况下使用 闪回数据库 使用闪回数据库,通过还原自先前某个时间点以来发生的所有更改,可快速将数据库恢复到那个时间的状态.因为不需要还原备份,所以此操作速度很快.可以使用此功能还原导致逻辑数据损坏的更改. 使用闪回数据库时,Oracle DB 可使用过去的块映像回退对数据库的更改.在正常数据库操作期间,Oracle DB 会不定期地将这些块

使用作业自动清理数据库日志文件

原文:使用作业自动清理数据库日志文件 在上一篇文章中介绍了如何删除数据库日志文件,但是想想还是不是不方便需要手工操作,于是想结合作业实现自动清理日志文件,在清理日志文件时我加上了条件,当磁盘控空间不足多少M才会清理,下面介绍如何实现该功能.没有阅读上一篇文章的,可以通过传送门阅读(删除数据库日志文件的方法)! 阅读目录 SQL查询磁盘空间大小 存储过程添加作业 示例下载 回到顶部 SQL查询磁盘空间大小  采用内置的存储过程,即可查看各个磁盘可用空间 exec master..xp_fixedd

[SQL Server] 数据库日志文件自动增长导致连接超时的分析

1.现象.问题描述 客户反映某客户端登陆不了,客户端程序日志显示“连接数据库超时”:检查对应的数据库服务器,日志显示“Autogrow of file '某数据库日志文件' in database '某数据库' was cancelled by user or timed out after 2391 milliseconds.  Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令

删除数据库日志文件的方法

原文:删除数据库日志文件的方法 你曾经有在执行SQL的时候,数据库报事务日志已满,然后执行报错.然后纠结于怎么删除数据库日志,捣鼓半天吗,现在就提供两种删除日志文件的方法,希望能够帮到你! 阅读目录 方法一:手工操作 方法二:存储过程代替手工操作 示例存储过程下载 回到顶部 方法一:手工操作   1.数据库->右键->属性->选项-恢复模式->由完成切换成简单   2.数据库->右键->任务->收缩-文件->由完成切换成简单->文件类型->日志-

SQL2008如何清空压缩数据库日志

SQL2008如何清空压缩数据库日志 编写人:左丘文 2015-4-10 近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给系统部署带来麻烦.因此想办法能否快速的将日志文件缩小到令人满意的504K. 今天在这里,我想与大家一起分享一下SQL2008中如何清空日志文档,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧.   1.         采用我之前在SQL2005中的方法,发现已不能正常运

批量删除指定数据库中的指定表

-- ---------------------------------------------------------------------------------------------------------- -- -- 1.查询:得到批量删除指定数据库中的指定表: -- 2.执行:将得到的结果复制下来,再重新执行: -- SELECT CONCAT( 'drop table ', table_name, '; ' ) FROM information_schema. TABLES W

PHP批量清空删除指定文件夹内容

PHP批量清空删除指定文件夹内容: cleancache.php <?php // 清文件缓存 $dirs = array( realpath(dirname(__FILE__) . '/../data/cache_data'), realpath(dirname(__FILE__) . '/../data/cache_file'), realpath(dirname(__FILE__) . '/../data/cache_view') ); // 清理缓存 foreach($dirs as $

SQL SERVER 数据日志太大,磁盘没有空间,直接删除数据库日志后,显示 恢复挂起。

问题简述: sharepoint的某个站点对应的数据库日志太大了,想把日志瘦身.于是我把整个数据库分离,然后附加数据库来重新生成日志文件.谁知道在附加的时候,居然报错"附加数据库报错:由于数据库没有完全关闭,无法重新生成日志" 问题原因:原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的.如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误. 处理办法: 一.把分离之前的日志文件也复制过来一齐附加嘛从错误提示看, 应该是你的日志文件中还包