共计 2284 个字符,预计需要花费 6 分钟才能阅读完成。
SQL Server 2005 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。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_LOG
2. 截断事务日志:
BACKUP LOG 库名 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 语句的设置方式:
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
使您得以循环错误日志文件,而不必停止而后再启动服务器。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/132829.htm