压缩数据库日志(原作:zjcxc(邹建))
来源:互联网 发布:js 自定义window方法 编辑:程序博客网 时间:2024/05/22 06:49
经常在CSDN上看到网友发帖说,压缩日志文件处理不当,导致数据库损坏,甚至不能恢复数据,于是就写了一个通用的数据库日志文件压缩的存储过程来解决此问题:
/*--压缩数据库的通用存储过程
压缩日志及数据库文件大小
因为要对数据库进行分离处理
所以存储过程不能创建在被压缩的数据库中
--邹建 2004.3--*/
/*--调用示例
exec p_compdb 'test'
--*/
use master --注意,此存储过程要建在master数据库中
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_compdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_compdb]
GO
create proc p_compdb
@dbname sysname, --要压缩的数据库名
@bkdatabase bit=1, --因为分离日志的步骤中,可能会损坏数据库,所以你可以选择是否自动数据库
@bkfname nvarchar(260)='' --备份的文件名,如果不指定,自动备份到默认备份目录,备份文件名为:数据库名+日期时间
as
--1.清空日志
exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')
--2.截断事务日志:
exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')
--3.收缩数据库文件(如果不压缩,数据库的文件不会减小
exec('DBCC SHRINKDATABASE(['+@dbname+'])')
--4.设置自动收缩
exec('EXEC sp_dboption '''+@dbname+''',''autoshrink'',''TRUE''')
--后面的步骤有一定危险,你可以可以选择是否应该这些步骤
--5.分离数据库
if @bkdatabase=1
begin
if isnull(@bkfname,'')=''
set @bkfname=@dbname+'_'+convert(varchar,getdate(),112)
+replace(convert(varchar,getdate(),108),':','')
select 提示信息='备份数据库到SQL 默认备份目录,备份文件名:'+@bkfname
exec('backup database ['+@dbname+'] to disk='''+@bkfname+'''')
end
--进行分离处理
create table #t(fname nvarchar(260),type int)
exec('insert into #t select filename,type=status&0x40 from ['+@dbname+']..sysfiles')
exec('sp_detach_db '''+@dbname+'''')
--删除日志文件
declare @fname nvarchar(260),@s varchar(8000)
declare tb cursor local for select fname from #t where type=64
open tb
fetch next from tb into @fname
while @@fetch_status=0
begin
set @s='del "'+rtrim(@fname)+'"'
exec master..xp_cmdshell @s,no_output
fetch next from tb into @fname
end
close tb
deallocate tb
--附加数据库
set @s=''
declare tb cursor local for select fname from #t where type=0
open tb
fetch next from tb into @fname
while @@fetch_status=0
begin
set @s=@s+','''+rtrim(@fname)+''''
fetch next from tb into @fname
end
close tb
deallocate tb
exec('sp_attach_single_file_db '''+@dbname+''''+@s)
go
- 压缩数据库日志(原作:zjcxc(邹建))
- 压缩数据库日志(原作:zjcxc(邹建))
- VB实现SQL Server数据库备份/恢复(原作:zjcxc(邹建))
- 转(zjcxc)之SQL脚本--有关压缩数据库日志
- zjcxc(邹建)的专栏
- zjcxc(邹建)的专栏
- zjcxc(邹建)的Blog
- 压缩数据库日志
- 压缩数据库日志
- 压缩sql数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 压缩数据库日志
- 修改Datagrid,在列上绑定其他控件。
- 把网友的RSA加密代码转换到C#
- SQL注入之"全暴"
- 7月28号签到表
- 用sysdeo的tomcatplugin整合最新版的eclipse 3.0和Tomcat5.0.27,构建jsp环境
- 压缩数据库日志(原作:zjcxc(邹建))
- 利用openbsd+openvpn快速建立企业vpn
- IIS中文件的读写
- VB实现SQL Server数据库备份/恢复(原作:zjcxc(邹建))
- ZT Blog带来网络新商机(1)
- openbsd+pf配置
- 华语武侠李连杰篇
- 关于C#中控制IIS的问题(DirectorySearcher)
- 利用openvpn+linux快速建立企业VPN