当前位置: 首页 > 知识 >正文

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

用MS数据库的朋友都会知道一个问题。c盘的空间很容易被占用。因为原来的系统盘分区比较小,这是因为数据库在使用过程中会增加日志文件的数量,会降低数据库的性能,占用大量的磁盘空间。

SQLServer数据库都有日志文件,记录用户修改数据库的操作。您可以通过直接删除日志文件并清空日志来清除数据库日志。

首先,删除日志

1.分离数据库。在分离数据库之前,您必须对数据库进行完整备份,并选择数据库——右键单击——任务——进行分离。

选中删除连接。

分离后,您将不会在数据库列表中看到分离的数据库。

2.删除日志文件

3.附加数据库。附加时,会提醒您找不到日志文件。

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

附加数据库后,将生成一个新的日志文件,新日志文件的大小为504K。

您也可以通过命令完成上述操作:

use master;

execsp_detach_db@dbname='TestDB';

execsp_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 TRANSACTIONTestDBWITHNO_LOG

第三,收缩数据库文件

DBCCSHRINKFILE('TestDB_log',1)

第四,截断事务日志

BACKUPLOGTestDBWITHNO_LOG

SQL Server 2008不支持此命令,但可以在SQL Server 2005和2000中使用。

清除SQLServer2005的日志文件

-最好备份日志,以后可以通过日志恢复数据。

以下是日志处理方法

一般不建议做第4,6两步

第4步不安全,有可能损坏数据库或丢失数据

第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.

--*/

--下面的所有库名都指你要处理的数据库的库名

1.清空日志

DUMPTRANSACTION库名WITHNO_LOG

2.截断事务日志:

BACKUPLOG库名WITHNO_LOG

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

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成

--收缩数据库

DBCCSHRINKDATABASE(库名)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles

DBCCSHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)

a.分离数据库:

企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:

企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:

下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。

a.分离

EXECsp_detach_db@dbname='库名'

b.删除日志文件

c.再附加

EXECsp_attach_single_file_db@dbname='库名',

@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'

5.为了以后能自动收缩,做如下设置:

企业管理器--服务器--右键数据库--属性--选项--选择'自动收缩'

--SQL语句设置方式:

EXECsp_dboption'库名','autoshrink','TRUE'

6.如果想以后不让它日志增长得太大

企业管理器--服务器--右键数据库--属性--事务日志

--将文件增长限制为xM(x是你允许的最大数据文件大小)

--SQL语句的设置方式:

alterdatabase库名modifyfile(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 使您得以循环错误日志文件,而不必停止而后再启动服务器。

相关文章:
  • 4月19日基金净值:富国成长策略混合最新净值1.0456,跌0.32%
  • 7月5日基金净值:嘉实新财富混合最新净值0.951,跌0.31%
  • 4月11日基金净值:易方达磐泰一年持有期混合A最新净值1.1052,涨0.02%_基金频道_证券之星
  • 4月13日基金净值:景顺长城创新成长混合最新净值1.6673,跌1.44%
  • 4月19日基金净值:金鹰改革红利混合最新净值2.275,跌1.22%
  • 4月24日基金净值:景顺长城资源垄断混合最新净值0.563,跌1.57%
  • 嘉实中证软件服务ETF净值下跌3.16% 请保持关注
  • 7月3日基金净值:汇添富双利债券A最新净值1.912,涨0.26%
  • 集体出手自购!基金经理:市场整体已经处于底部区间
  • 富国中证大数据产业ETF净值下跌6.07% 请保持关注_基金频道_证券之星