缩小SQL日志

原创 2004年09月02日 15:37:00

--缩小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

sqlserver日志文件缩小

最近装了个500g的固态硬盘,导入我原来的数据库后发现有60多个G的内存不见了, 最后发现我的某个数据库有60多个G的日志文件(.ldf文件)文件,现在来教大家如何把60多个G变成1M。     ...
  • sleepsmile
  • sleepsmile
  • 2016年03月21日 17:08
  • 161

怎样收缩SqlServer2005的日志文件

方法 一、     1.先分离数据库,然后删除日志文件,再附件数据库。     2.收缩文件,选择日志文件,设置将文件收缩到0M,试了一下,只能从65G收缩到55G,也就是只释放了未使用的空间。 ...
  • ddjj_1980
  • ddjj_1980
  • 2012年04月13日 14:24
  • 4243

缩小SQL日志

  • zgqtxwd
  • zgqtxwd
  • 2008年04月27日 05:28
  • 156

sql server 2005 日志无法收缩情况之一

  sql server 2005数据库日志无法收缩 收藏 数据库出问题的过程:数据库体积很大,分两个文件,共40多G,没有启动完整日志,用的是简单日志。经过几次非法关机重启,数据库状态被标为可疑,无...
  • xubin224
  • xubin224
  • 2010年09月09日 09:28
  • 1304

sql server2008 日志收缩 命令行

---首先备份数据库(含日志文件)  use myhis  go   backup database  myhis to disk='d:\myhis_rzbak'  go  ...
  • BlueCY
  • BlueCY
  • 2015年05月08日 10:44
  • 1342

SQL Server 如何缩小日志

  方法1:收缩日志,使用dbcc shrinkfile命令方法2:修改数据库的恢复模式为“简单模式”(如果日志不重要的话),   alter database 数据库名 set recovery s...
  • lanmao100
  • lanmao100
  • 2008年12月10日 22:15
  • 381

缩小日志

  • zgqtxwd
  • zgqtxwd
  • 2008年04月28日 04:50
  • 146

sql收缩数据库日志的几种办法

在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL, 方法一: --BigData为数据库名 DUMP TRANSACTION BigData WITH ...
  • qooer_tech
  • qooer_tech
  • 2014年11月18日 15:13
  • 4862

sql server 2008数据库日志太大解决方法

环境: 数据文件.mdf为22G,日志文件.ldf为33G,用常规方法清除日志文件时,报错: USE [master] GO ALTER DATABASE CHIANG_SCM_DB SET REC...
  • hdhai9451
  • hdhai9451
  • 2015年06月13日 15:53
  • 3472

缩小SQL Server的数据库日志

  SET NOCOUNT ON  DECLARE @LogicalFileName sysname,  @MaxMinutes INT,  @NewSize INT  USE Marias  -- ...
  • cxy1238
  • cxy1238
  • 2008年09月19日 01:06
  • 406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:缩小SQL日志
举报原因:
原因补充:

(最多只允许输入30个字)