USE master
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--建立人: 高升
--建立日期:2007/05/18
--修改日期:2007/06/02
--功能目的:收缩数据库的日志文件
--参数: 要执行收缩的数据库名称,如果参数为'',则收缩所有的非系统数据库,这个参数是为了应付临时--情况的,根据特殊情况临时针对某个数据库执行可以写上这个数据库的名称
--注意: 修改了恢复模式,注意备份
--流程说明:1.转到需要收缩的数据库
-- 2.更改数据库恢复模式为简单
-- 3.指定收缩大小
-- 4.更改数据库恢复模式为完整
CREATE PROCEDURE [dbo].[DB_Shrink_Log]
@dbName varchar(50) --要执行收缩的数据库名称
AS
DECLARE @exec_shrink varchar(500) --存储所有的执行语句
DECLARE @sno int --执行的数据库临时编号
DECLARE @old_size decimal(18,2) --收缩前ldf文件大小
DECLARE @new_size decimal(18,2) --收缩后ldf文件大小
DECLARE @mdf_size decimal(18,2) --数据库mdf文件的大小
DECLARE @shrink_DB table( --存储待执行的数据库名称
sno int identity(1,1),name sysname)
BEGIN try
if (@DBName = '') --记录需要收缩的数据库名称
INSERT @shrink_DB SELECT name FROM sys.databases WHERE database_id > 4
else
INSERT @shrink_DB SELECT name FROM sys.databases WHERE name = @DBName
--开始循环收缩数据库Log文件
SET @sno = 1
while(@sno <= (SELECT COUNT(sno) FROM @shrink_DB))
BEGIN
SELECT @dbName = name FROM @shrink_DB WHERE sno = @sno
--取出数据库mdf和ldf文件的大小
SELECT @mdf_size = size * 8 / 1024 FROM sys.master_files WHERE database_id = DB_ID(@DBName) and file_id = 1
SELECT @old_size = size * 8 / 1024 FROM sys.master_files WHERE database_id = DB_ID(@DBName) and file_id = 2
--如果数据库的ldg文件大于mdf/10文件则收缩,否则不需要收缩
if (@old_size > @mdf_size/10)
BEGIN
--1.将数据库上下文更改为需要收缩的数据库
SET @exec_shrink = 'USE ' + @dbName + ';' + char(13)
--2.将恢复模式改为'简单'
set @exec_shrink = @exec_shrink +
'ALTER DATABASE ' + @dbName +
' SET RECOVERY SIMPLE;' + char(13)
--3.取当前数据库所有的ldf文件,文件将压缩到数据库mdf文件大小的1/10
DECLARE @shrink varchar(200)
SET @shrink = ''
SELECT @shrink = @shrink + 'DBCC SHRINKFILE('+rtrim(file_id)+','+rtrim(Ceiling(@mdf_size/10))+');' +char(13) FROM sys.database_files WHERE type = 1
set @exec_shrink = @exec_shrink + @shrink
--如果数据库只有一个ldf文件则可以写简单点,ldf文件的file_id通常为2
--SET @exec_shrink = @exec_shrink + 'DBCC SHRINKFILE(2,' + rtrim(Ceiling(@mdf_size/10)) + ');'+ char(13)
--4.将恢复模式改为'完整'
set @exec_shrink = @exec_shrink +
'ALTER DATABASE ' + @dbName +
' SET RECOVERY FULL;'
exec (@exec_shrink)
--print @exec_shrink
SELECT @new_size = size * 8 / 1024 FROM sys.master_files WHERE database_id = DB_ID(@DBName) and file_id = 2
print (@dbName +'收缩完成,压缩前 ' +rtrim(@old_size) + ' MB,收缩后 '+ rtrim(@new_size) + ' MB')
END
else
BEGIN
print(@dbName + '暂时不需要收缩。')
END
SET @sno = @sno + 1
END --while
END try
BEGIN catch
print ERROR_MESSAGE()
END catch
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
转载与CSDN,地址:http://blog.csdn.net/hb_gx/article/details/1616550
分享到:
相关推荐
通过SQL语句,压缩SQL数据库的日志文件,最小可以将日志文件压缩到1k左右
程序是在delphi6,win2000server,sql2000环境下编译的采用动态生成存储过程来压缩数据库日志,测试过基本没有问题.使用到的控件: 1stclass(做的label和image) dxPack2 (用里面的按钮控件做的按钮)可以用delphi自带的...
程序是在delphi6,win2000server,sql2000环境下编译的采用动态生成存储过程来压缩数据库日志,测试过基本没有问题.使用到的控件: 1stclass(做的label和image) dxPack2 (用里面的按钮控件做的按钮)可以用delphi自带的...
如清除系统日志,数据同步,数据备份,整理数据库空间,调用存储过程等。已测试支持Oracle、SqlServer、MySql等数据库、及Access、Excel等OleDb数据库。 文件操作任务:同步服务器上的文件,或删除服务器上的日志...
通过下面这个可以执行单个数据库日志压缩,问题每次都要写数据库名字,日志大的话执行速度没有那么快
可以修复由于数据存储过程中导致的数据库中某个表错误,致使软件打不开,或者出现错误! 其功能有: 附加数据库 检测数据库 修复数据库 压缩数据库 压缩日志文件 …………
5、truncate表、delete记录,压缩数据库。 二、旧方案存在的问题 1、问题一:在追加月日志,有时访问某一网站的所有人员名单太长,会造成如下错误。 Warning: The table 'SITECLICKTOPSUM' has been created but ...
可自由组合的无限复合式备份任务,支持备份文件ZIP压缩后通过Lan/Ftp/Email传输存储,Email日志信息发送,自由删除指定周期与存储位置的备份文件,还具有安全可靠的SQL数据库恢复功能。 1. 完全免费、纯“绿色化”、...
支持从ASM中直接抽取出数据文件和其他任意存储在ASM中的文件(包括控制文件、日志文件和归档日志等),即使相关的磁盘组不能成功mount 支持的Oracle数据库版本包括7,8i,9i,10g,11g 支持多种平台的数据库,包括AIX...
用户可以自由组合的无限复合式备份任务,支持备份文件ZIP压缩后通过Lan/Ftp/Email传输存储,Email日志信息发送,让你的sql数据库永不丢失。 SQL数据库备份恢复助手 功能特点: 1、完全免费、纯“绿色化”、...
数据压缩:为了节省存储空间和提高备份效率,可以选择对备份文件进行压缩。压缩可以使用数据库管理系统的内置工具或第三方压缩工具来完成。 日志记录:自动备份过程应该有日志记录,以便检查备份的执行情况和出现的...
1.2.1 怎样命名数据库文件 1.2.2 使用最佳灵活结构 1.2.3 怎样配置符合 OFA 的 Oracle 文件 系统 1.3 规划数据库文件布局 1.3.1 最大化可用性的规划 1.3.2 最小化磁盘争用的规划 1.4 建立参数文件 1.4.1 ...
可自由组合的无限复合式备份任务,支持备份文件ZIP压缩后通过Lan/Ftp/Email传输存储,Email日志信息发送,自由删除指定周期与存储位置的备份文件,还具有安全可靠的SQL数据库恢复功能。 1)完全免费、纯“绿色化”、...
可自由组合的无限复合式备份任务,支持备份文件ZIP压缩后通过Lan/Ftp/Email传输存储,Email日志信息发送,自由删除指定周期与存储位置的备份文件,还具有安全可靠的SQL数据库恢复功能。 1. 完全免费、纯“绿色化”...
实验41:编写存储过程 83 实验42:编写包package 85 第三部分数据库的体系结构 88 实例的维护 88 实验43:数据库的最高帐号sys的操作系统认证模式 90 实验44:数据库的最高帐号sys的密码文件认证模式 92 实验45:...
可自由组合的无限复合式备份任务,支持备份文件ZIP压缩后通过Lan/Ftp/云(金山快盘)/Email传输存储,Email日志信息发送,自由删除指定周期与存储位置的备份文件,还具有安全可靠的SQL数据库恢复功能。 1)完全...
4)通过ZIP模式压缩并加密数据库备份文件; 5)将备份文件通过LAN/FTP/EMAIL进行异地传输; 6)将相应的备份日志信息(可选择仅备份产生错误的日志信息)发送至指定的EMAIL; 7)自动删除指定周期内的本地/LAN/FTP所...
可自由组合的无限复合式备份任务,支持备份文件ZIP压缩后通过Lan/Ftp/云(金山快盘)/Email传输存储,Email日志信息发送,自由删除指定周期与存储位置的备份文件,还具有安全可靠的SQL数据库恢复功能。 SQL数据库...
1. 基础知识:包括 MySQL 数据库的基本概念、SQL 命令、数据类型、索引、视图、存储过程等。 2. 性能优化:包括 SQL 查询优化、索引优化、数据表分区、缓存机制等。 3. 备份与恢复:包括数据备份和恢复的方法、备份...