奇宝库 > SQL Server 2005删除日志文件的几种方法

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

用MS数据库的朋友都会知道一个问题。驱动器C的空间很容易被占用。因为原来系统盘的分区比较小,这是因为数据库在使用过程中日志文件会不断增加,会降低数据库的性能,占用大量的磁盘空间。所有SQLServer数据库都有日志文件,记录用户修改数据库的操作。您可以通过直接删除日志文件并清空日志来清除数据库日志。

首先,删除日志

1.分离数据库。请确保在分离数据库之前对其进行完整备份。选择数据库——右键3354任务3354分离。

选中删除连接。

分离后,分离的数据库在数据库列表中将不可见。

2.删除日志文件

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

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

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

您也可以使用命令来完成上述操作:

使用master

execsp _ detach _ db @ dbname=' TestDB '

execsp _ attach _ single _ file _ db @ dbname=' TestDB '@ phys name=' D:\ Program Files \ Microsoft SQL server \ MSSQL 10。' SQL2008\MSSQL\DATA\TestDB.mdf '

第二,清除日志。

sql server 2005和2000支持此命令,但sql server 2008不支持。

转储TRANSACTIONTestDBWITHNO _ LOG

第三,收缩数据库文件

DBCCSHRINKFILE('TestDB_log '1)

四。截断事务日志

BACKUPLOGTestDBWITHNO_LOG

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

清除SQLServer2005的日志文件

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

以下是日志处理方法

一般来说,不推荐第4步和第6步。

步骤4不安全,可能会损坏数据库或丢失数据。

第六步如果日志达到上限,以后数据库处理会失败,只有清除日志后才能恢复。

- */

-下面的所有库名都是指您要处理的数据库的库名。

1.清空日志。

用NO_LOG转储事务库名

2.截断事务日志:

使用NO_LOG备份库名

3.收缩数据库文件(如果不压缩,数据库文件将不会减少。

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

-选择日志文件-选择收缩到收缩模式下的XXM,这里会给出允许收缩的最小m数。直接输入这个号码确认就可以了。

-选择数据文件-选择在合同模式下与XXM签订合同,此处将给出允许签订合同的最小m数。直接输入该号码并确认。

也可以用SQL语句来完成。

-缩小数据库

DBCCSHRINKDATABASE(库名)

-收缩指定的数据文件,1是文件号,可以用这条语句查询:select * from sysfiles。

DBCCSHRINKFILE(1)

4.最小化日志文件(如果是sql7.0,此步骤只能在查询分析器中完成)

A.分离数据库:

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

B.删除我电脑中的日志文件

C.其他数据库:

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

这种方法将生成一个大小只有500k多的新日志。

或者使用代码:

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

A.分离

Exec _ detach _ db @ dbname='库名'

B.删除日志文件

C.额外的

exec _ attach _ single _ file _ db @ dbname='库名'

@ phys name=' c:\ program files \ Microsoft SQL server \ MSSQL \ data \ library name . MDF '

5.为了在将来自动收缩,进行以下设置:

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

- SQL语句设置方法:

EXECsp_dboption '库名''自动收缩'' TRUE '

6.如果你想防止它在未来变得太大

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

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

- SQL语句设置:

更改库名modifyfile(name=逻辑文件名,maxsize=20)

长时间使用SQL Server数据库会导致日志文件逐渐变大。很难备份数据库并将其发送给任何人。

运行以下语句清除日志文件,只剩下大约1M的空间。

用NO_LOG转储事务数据库名

Cdbshrinkdatabase('数据库名称'TRUNCATEONLY)

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

如果SQLServer的系统日志过大,会造成SQLServer无法启动等一系列问题。今天遇到这个问题,上网搜了一下。解决方法是删除它,但是当前的ErrorLog正在被SQL使用,无法删除。如果要删除,只能停止SQL server。没有别的办法了吗?

是:使用以下存储过程:EXEC sp_cycle_errorlog。

给…作注解

每次启动SQL Server时,当前错误日志都被重命名为errorlog.1。Errorlog.1变成errorlog.2,errorlog.2变成errorlog.3,依此类推。SP _ CYCLE _ ERRORROG使您能够循环错误日志文件,而不必停止和启动服务器。

本文来自网络,不代表本站立场,转载请注明出处: