用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使您能够循环错误日志文件,而不必停止和启动服务器。