删除sql server大容量日志的方法
2008-09-02 10:00:07 来源:WEB开发网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
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››删除Win8自带中文输入法方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接