--缩小SQL日志
-- exec p_compdb ''''test''''
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
[办公软件]在sybase中插入图片、PDF、文本文件 [办公软件]安装Sybase ASE [办公软件]linux指令大全(完整篇) [办公软件]Linux新手入门常用命令大全 [办公软件]在RedHat Linux 9里安装gaim0.80 [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法 [办公软件]Linux程序员必读:中文化与GB18030标准 [办公软件]linux指令大全 [办公软件]制作Linux启动盘的四种方法 [办公软件]Linux文件系统的反删除方法
|