MSSQL 清空日志 删除日志文件

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

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

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

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

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

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

二、sql语句清除mssql日志

DUMP TRANSACTION TestDB WITH NO_LOG 清除日志

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

BACKUP LOG TestDB WITH NO_LOG 截断事务日志

该命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。

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

 declare @logfilename varchar(100)
 declare @datafilename varchar(100)
select @logfilename=physical_name from sys.database_files where type=1
select @datafilename=physical_name from sys.database_files where type=0

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

use master
exec sp_detach_db @dbname='TestVFA';

紧接下来就是删除数据库 日志文件
----Remove file
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @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', 1;
RECONFIGURE;
exec sp_configure 'Ole Automation Procedures',1;
RECONFIGURE;

时间: 2024-09-20 06:19:59

MSSQL 清空日志 删除日志文件的相关文章

Linux 中清空或删除大文件内容的五种方法_Linux

在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何Linux命令行编辑器 去打开这些文件.那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法. 注意: 由于再Linux中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件.清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误. 提示:在下面的示例中,我们将使用名为 access.log 的文件来作为示例样本. 1. 通过重定向到 Nul

MSSQL清空日志删除日志文件

  最近的项目主要做数据的归档,把数据从一个数据库拉到另一个数据库,造成新数据库的日志文件非常大;或者数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.于是想把日志文件删除.最简单就是先分离数据库->删除日志文件->最后附加数据,我这里需要在SSIS中调用,所以已sql脚本为主. 两种简单的清除日志的方法: 一分离附加法: 1.首先把数据库分离,分离数据库之前一定要做好数据库的全备份,选择数据库--右键--任务--分离,其中药勾选删除连接! 分离后在数据库列

Linux下清空或删除大文件内容的5种方法

在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件.那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法. 注意:在我们进一步深入了解这些方法之前,请记住: 由于在 Linux 中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件.清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误. 前面已经说道,下面的这些方法都是从命令行中达到清空文件的目的

Linux 下清空或删除大文件内容的 5 种方法

在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件.那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法. 注意:在我们进一步深入了解这些方法之前,请记住: 由于在 Linux 中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件.清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误. 前面已经说道,下面的这些方法都是从命令行中达到清空文件的目的

SQL Server 2008 清空删除日志文件(瞬间日志变几M)_mssql2008

SQL2008清空删除日志: 方法一: USE [master] GO ALTER DATABASE AFMS SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE AFMS SET RECOVERY SIMPLE GO USE AFMS GO DBCC SHRINKFILE (N'AFMS_Log' , 11, TRUNCATEONLY) GO USE [master] GO ALTER DATABASE AFMS SET RECOVERY FU

SQL Server 2005删除日志文件的几种方法小结_mssql2005

使用MS数据库的朋友就会知道一个问题,C盘的空间很容易被占满了.因为本来系统盘就分区比较小,这是由于数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删除log文件和清空日志在清除数据库日志. 一.删除LOG1.分离数据库.分离数据库之前一定要做好数据库的全备份,选择数据库--右键--任务--分离. 勾选删除连接 分离后在数据库列表将看不到已分离的数据库. 2.删除LO

SQL Server 清空删除日志

  sql 在使用中每次查询都会生成日志,但是如果你长久不去清理,可能整个硬都堆满哦,笔者就遇到这样的情况,直接网站后台都进不去了.下面我们一起来学习一下如何清理这个日志吧 SQL2005清空删除日志: 复制代码 代码如下: Backup Log DNName with no_log '这里的DNName是你要收缩的数据库名,自己注意修改下面的数据库名,我就不再注释了. go dump transaction DNName with no_log go USE DNName DBCC SHRIN

SQL Server 2005删除日志文件的几种方法

  使用MS数据库的朋友就会知道一个问题,C盘的空间很容易被占满了.因为本来系统盘就分区比较小,这是由于数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删除log文件和清空日志在清除数据库日志. 一.删除LOG 1.分离数据库.分离数据库之前一定要做好数据库的全备份,选择数据库--右键--任务--分离. 勾选删除连接 分离后在数据库列表将看不到已分离的数据库. 2.删

SQL Server 2005删除日志文件的几种方法小结

SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删除log文件和清空日志在清除数据库日志   使用MS数据库的朋友就会知道一个问题,C盘的空间很容易被占满了.因为本来系统盘就分区比较小,这是由于数据库在使用过程中会使日志文件不断增 加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作.可以通过直接删 除log文件和清空日志在清除数据库日志. 一.删除LOG 1.分离数据库.分离