阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SQL Server 2005删除log文件和清空日志方案

222次阅读
没有评论

共计 2284 个字符,预计需要花费 6 分钟才能阅读完成。

SQL Server 2005 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server 数据库都有 log 文件,log 文件记录用户对数据库修改的操作。可以通过直接删除 log 文件和清空日志在清除数据库日志。

一、删除 LOG

1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。

SQL Server 2005 删除 log 文件和清空日志方案

勾选删除连接

SQL Server 2005 删除 log 文件和清空日志方案

分离后在数据库列表将看不到已分离的数据库。

2、删除 LOG 文件

3、附加数据库,附加的时候会提醒找不到 log 文件。

SQL Server 2005 删除 log 文件和清空日志方案

SQL Server 2005 删除 log 文件和清空日志方案

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

SQL Server 2005 删除 log 文件和清空日志方案

附加数据库之后将生成新的日志文件 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

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2284字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中