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

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

一、删除LOG
1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。

勾选删除连接

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

2、删除LOG文件

3、附加数据库,附加的时候会提醒找不到log文件。

删除数据库信息信息的ldf文件:

附加数据库之后将生成新的日志文件log,新的日志文件的大小事504K。

也可以通过命令才完成以上的操作:

use master;
exec sp_detach_db @dbname='TestDB';
exec sp_attach_single_file_db @dbname='TestDB',@physname='D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TestDB.mdf'

、清空日志

该命令在SQL Server 2005和2000支持,SQL Server 2008不支持该命令。

DUMP TRANSACTION TestDB WITH NO_LOG

三、收缩数据库文件

DBCC SHRINKFILE ('TestDB_log',1)

四、截断事务日志

BACKUP LOG TestDB WITH NO_LOG

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

清除SQLServer2005的LOG文件

--最好备份日志,以后可通过日志恢复数据。。。以下为日志处理方法一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.--*/--下面的所有库名都指你要处理的数据库的库名1.清空日志DUMP TRANSACTION 库名 WITH NO_LOG2.截断事务日志:BACKUP LOG 库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成 --收缩数据库DBCC SHRINKDATABASE(库名)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。a.分离EXEC sp_detach_db @dbname = '库名'b.删除日志文件c.再附加EXEC sp_attach_single_file_db @dbname = '库名', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:EXEC sp_dboption '库名', 'autoshrink', 'TRUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 库名 modify file(name=逻辑文件名,maxsize=20)

SQL Server 数据库使用时间一长就会导致Log文件逐渐变的庞大, 想备份一下数据库, 想发给谁都很困难
运行下面的语句就可以 清到Log文件只剩下1M左右的空间.

DUMP TRANSACTION 数据库名 WITH NO_LOG
DBCC SHRINKDATABASE('数据库名',TRUNCATEONLY)

不重启SQL服务,删除SQLServer系统日志

SQLServer的系统日志过大,就会引起SQLServer服务器无法启动等一系列问题。今天我遇到了这个问题,在网上搜索了一下,解决方法是删除就 可以了,可是当前的ErrorLog正在被SQL使用无法删除啊,要删除只能停止SQL服务器,难道就没有别得办法了吗?
 回答是肯定的:使用以下存储过程:EXEC   sp_cycle_errorlog

注释  
  每次启动   SQL   Server   时,当前错误日志重新命名为   errorlog.1;errorlog.1   成为  errorlog.2,errorlog.2   成为   errorlog.3,依次类推。sp_cycle_errorlog   使您得以循环错误日志文件,而不必停止而后再启动服务器。

(0)

相关推荐

  • Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法

    今天早上一个客户的SqlServer 2008的服务器应为重新修改配置导致网站打不开,链接到远程服务器之后,在服务器的事件查看器,发现如下错误, 错误描述: 日志名称: Application 来源: MSSQLSERVER 日期: 2011/10/25 11:30:49 事件 ID: 17058 任务类别: 服务器 级别: 错误 关键字: 经典 用户: 暂缺 计算机: WIN-VPS-SERVER 描述: initerrlog: 无法打开错误日志文件 'D:\WWW\Services\SQLD

  • SQL SERVER 2008数据库日志文件收缩的方法

    最近公司的数据库随着业务量的增多,日志文件巨大(超过300G),造成磁盘空间不够用,进而后来的访问数据库请求无法访问. 网上类似的方法也很多,但不可行,如下是我实践过,可行的,将日志文件收缩至任意指定大小的方法: 第一步: 在SQL SERVER Management Studio 中右击数据库选择"属性"--->"选项",将恢复模式由默认的"完整"改为"简单". 第二步:再次右键选择数据库的"任务"

  • Sqlserver2005日志文件太大如何减小

    Sqlserver2005日志文件太大,使其减小的方法如下所示: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith TRUNCATE_ONLY DBCC SHRINKDATABASE(dbName) 日志文件减小到1MB sql server清空日志文件2011-04-06 23:05 1: 删除LOG 1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库 2:删除LOG文

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

    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

  • SqlServer修改数据库文件及日志文件存放位置

    --查看当前的存放位置 select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'数据库名'); --修改文件的存放位置下次启动生效 --testDb为数据库名, alter database 数据库名 modify file ( name = 文件名(不包含后缀), filename = '文件存储路径'); a

  • SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法

    复制代码 代码如下: exec sp_attach_db exun,'d:\exun2.mdf' 一句话就可以了. 网上看了那些比较繁琐的,都是sql server 2000版本的. (可能执行一次不能成功,测试了下,有时候需要执行2次以上命令才行) 执行了之后,记得刷新数据库,不然是不会显示的

  • 清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案

    SQL 2008日志文件占了23G硬盘空间,而事务日志已经截断(Truncate),实际日志内容很小,1G都不到,想要释放日志文件霸占的多余空间. 但是,无论怎么收缩(Shrink)日志文件,空间就是不能释放,总是出现错误: Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required. 之前解决过类似的问题,也写过一篇博客-SQL Server 2008事务日志清理,当时采用的最终解决方法是:

  • SQL Server无法收缩日志文件的原因分析及解决办法

    最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /****** Object: StoredProcedure [dbo].[ShrinkUser_DATABASESLogFile] Script Date: 01/05/2016 09:52:39 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[ShrinkUser_DATABASE

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

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

  • MySQL导入sql文件的三种方法小结

    目录 一.使用工具Navicat for MySQL导入 1.打开localhost_3306,选中右击“新建数据库” 2.指定数据库名和字符集(可根据sql文件的字符集类型自行选择) 3.选中数据库下的表运行SQL文件 4.选中路径导入 二.使用官方工具MySQL Workbench导入 1.第一种方法 2.第二种方法 三.使用命令行导入 总结 一.使用工具Navicat for MySQL导入 工具的具体下载及使用方法推荐的一篇文章:https://www.jb51.net/article/

  • Linux删除目录下的文件的10种方法小结

    看到了一遍文章,便突发奇想的想起Linux中删除目录下的所有文件的方法:整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文件 2.find . -type f -delete或find . -type f -exec rm -f {} \; #用find命令查找普通文件并删除or用find命令的处理动作将其删除 3.find . -type f | xargs rm -f #用于参数列表过长;要删除的文件太多 4.rm

  • SQL Server 2005中更改sa的用户名的方法

    修改数据库SA账号名称的代码如下: 复制代码 代码如下: Alter LOGIN sa DISABLE Alter LOGIN sa WITH NAME = [systemAccount] "systemAccount" 为SA的新名称,执行完成后刷新一下右侧登录名即可看到修改成功的账号名称. SQL Server 2005修改sa用户密码的方法图文版 一.修改SQL Server 2005中sa用户密码的方法 1. 点击"开始 - 所有程序 - Microsoft SQL

  • SQL server 2005中设置自动编号字段的方法

    如果希望重新定义在表中添加新记录时该列中自动生成并存储于列中的序列号,则可以更改该列的标识属性.在每个表中只能设置一个列的标识属性. 具有标识属性的列包含系统生成的连续值,该值唯一地标识表中的每一行(例如,雇员标识号).在包含标识列的表中插入值时,Microsoft SQL Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符. 注意: 只能为不允许空值且数据类型为 decimal.int.numeric.smallint.bigin

  • SQL Server遍历表中记录的2种方法(使用表变量和游标)

    SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录.本文将介绍利用使用表变量和游标实现数据库中表的遍历. 表变量来实现表的遍历 以下代码中,代码块之间的差异已经用灰色的背景标记. 复制代码 代码如下: DECLARE @temp TABLE ( [id] INT IDENTITY(1, 1) , [Name] VARCHAR(10) ) DECLARE @tempId INT , @tempName VARCHAR(

  • postgresql 删除重复数据的几种方法小结

    在使用PG数据库的这段时间,总结了三种删除重复数据的方法,其中最容易想到的就是最常规的删除方法,但此方法性能较差,删数据耗时较久,虽容易实现,但性能太差,影响写数据的速率. 另外就是被使用的group by删除方法,效率较高. 还有一种是刚发现的,还没有验证,现在就总结下这三种删除方法,并验证各自的执行效率. 首先创建一张基础表,并插入一定量的重复数据. test=# create table deltest(id int, name varchar(255)); CREATE TABLE te

  • SQL Server中删除重复数据的几个方法

    方法一 复制代码 代码如下: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount

随机推荐