SQLSERVER数据库删除LOG⽂件和清空⽇志的⽅案
数据库在使⽤过程中会使⽇志⽂件不断增加,使得数据库的性能下降,并且占⽤⼤量的磁盘空间。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)
四、截断事务⽇志
sql2000数据库在哪个文件夹BACKUP LOG TestDB WITH NO_LOG
该命令在SQL Server 2008也是不⽀持,在SQL Server 2005和2000可以使⽤。
清除SQLServer2005的LOG⽂件
--最好备份⽇志,以后可通过⽇志恢复数据。。。
以下为⽇志处理⽅法
⼀般不建议做第4,6两步
第4步不安全,有可能损坏数据库或丢失数据
第6步如果⽇志达到上限,则以后的数据库处理会失败,在清理⽇志后才能恢复.
-
-*/
--下⾯的所有库名都指你要处理的数据库的库名
1.清空⽇志
DUMPTRANSACTION 库名 WITH NO_LOG
2.截断事务⽇志:
BACKUPLOG 库名 WITH NO_LOG
3.收缩数据库⽂件(如果不压缩,数据库的⽂件不会减⼩
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩⽂件
--选择⽇志⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了--选择数据⽂件--在收缩⽅式⾥选择收缩⾄XXM,这⾥会给出⼀个允许收缩到的最⼩M数,直接输⼊这个数,确定就可以了
也可以⽤SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)
--收缩指定数据⽂件,1是⽂件号,可以通过这个语句查询到:select * from sysfiles
DBCC 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语句的设置⽅式:
alterdatabase 库名 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 使您得以循环错误⽇志⽂件,⽽不必停⽌⽽后再启动服务器。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论