WEB开发网
开发学院数据库MSSQL Server 删除sql server大容量日志的方法 阅读

删除sql server大容量日志的方法

 2008-09-02 10:00:07 来源:WEB开发网   
核心提示: exec(’DUMPTRANSACTION[’+@dbname+’]WITHNO_LOG’)--2.截断事务日志:exec(’BACKUPLOG[’+@dbname+’]WITHNO_LOG’)

exec(’DUMPTRANSACTION[’+@dbname+’]WITHNO_LOG’)

--2.截断事务日志:

exec(’BACKUPLOG[’+@dbname+’]WITHNO_LOG’)

--3.收缩数据库文件(如果不压缩,数据库的文件不会减小

exec(’DBCCSHRINKDATABASE([’+@dbname+’])’)

--4.设置自动收缩

exec(’execsp_dboption’’+@dbname+’’,’autoshrink’,’TRUE’’)

--后面的步骤有一定危险,你可以可以选择是否应该这些步骤

--5.分离数据库

if@bkdatabase=1 
  begin 
  ifisnull(@bkfname,’)=’ 
  set@bkfname=@dbname+’_’+convert(varchar,getdate(),112) 
  +replace(convert(varchar,getdate(),108),’:’,’) 
  select提示信息=’备份数据库到SQL默认备份目录,备份文件名:’+@bkfname 
  exec(’backupdatabase[’+@dbname+’]todisk=’’+@bkfname+’’) 
  end

--进行分离处理

createtable#t(fnamenvarchar(260),typeint) 
  exec(’insertinto#tselectfilename,type=status&0x40from[’+@dbname+’]..sysfiles’) 
  exec(’sp_detach_db’’+@dbname+’’) 
  --删除日志文件 
  declare@fnamenvarchar(260),@svarchar(8000) 
  declaretbcursorlocalforselectfnamefrom#twheretype=64 
  opentb 
  fetchnextfromtbinto@fname 
  while@@fetch_status=0 
  begin 
  set@s=’del"’+rtrim(@fname)+’"’ 
  execmaster..xp_cmdshell@s,no_output 
  fetchnextfromtbinto@fname 
  end 
  closetb 
  deallocatetb

--附加数据库

set@s=’ 
  declaretbcursorlocalforselectfnamefrom#twheretype=0 
  opentb 
  fetchnextfromtbinto@fname 
  while@@fetch_status=0 
  begin 
  set@s=@s+’,’’+rtrim(@fname)+’’ 
  fetchnextfromtbinto@fname 
  end 
  closetb 
  deallocatetb 
  exec(’sp_attach_single_file_db’’+@dbname+’’+@s) 
  go

上一页  1 2 3 4 

Tags:删除 sql server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接