数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

MSSQL 清空日志 删除日志文件


发布日期:2019年08月12日
 
MSSQL 清空日志 删除日志文件

最近的项目主要做数据的归档把数据从一个数据库拉到另一个数据库造成新数据库的日志文件非常大或者数据库在使用过程中会使日志文件不断 增加使得数据库的性能下降并且占用大量的磁盘空间于是想把日志文件删除最简单就是先分离数据库》删除日志文件》最后附加数据我这里需要在 SSIS中调用所以已sql脚本为主

两种简单的清除日志的方法

一分离附加法
首先把数据库分离分离数据库之前一定要做好数据库的全备份选择数据库——右键——任务——分离其中药勾选删除连接!

分离后在数据库列表将看不到已分离的数据库

删除数据库的LOG文件数据库文件夹下的对应数据库的 ldf文件

附加数据库附加的时候会提醒找不到log文件到时附加上后会自动创建一个新的日志文件从而达到清理数据库的目的

sql语句清除mssql日志

DUMP TRANSACTION TestDB WITH NO_LOG 清除日志

DBCC SHRINKFILE (TestDB_log) 收缩数据库文件

BACKUP LOG TestDB WITH NO_LOG 截断事务日志

该命令在SQL Server 也是不支持在SQL Server 可以使用

首先我们需要获取数据库文件的路径

declare @logfilename varchar()
declare @datafilename varchar()
select @logfilename=physical_name from sysdatabase_files where type=
select @datafilename=physical_name from sysdatabase_files where type=

然后切换到master下分离数据库

use master
exec sp_detach_db @dbname=TestVFA;

紧接下来就是删除数据库 日志文件
Remove file
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate ScriptingFileSystemObject @FSO_Token OUTPUT
EXEC @Result = sp_OAMethod @FSO_Token DeleteFile NULL @logfilename
EXEC @Result = sp_OADestroy @FSO_Token
最后就是附加数据库
exec sp_attach_single_file_db @dbname=TestVFA@physname=@datafilename

注意默认Ole Automation Procedures 是禁用的我们需要启用它

exec sp_configure show advanced options ;
RECONFIGURE;
exec sp_configure Ole Automation Procedures;
RECONFIGURE;

上一篇:优化SQL语句需要注意的4点

下一篇:SQL查询连续号码段实现实例