收缩数据库出现的问题与解决方案

本文介绍了当SQL Server数据库的日志文件过大时,如何通过多种方法进行有效收缩的方法。包括直接使用DBCC SHRINKDATABASE命令、分离并重新附加数据库、清空事务日志等方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库statmemberdata现在的日志文件都达到40G了,用DBCC SHRINKDATABASE来收缩这个日志,过程如下:
1、重新启动数据服务器(通过远程控制软件进行的)
2、在远程通过SQL SERVER的查询分析器中连接到数据服务器
3、远程控制数据服务器服务暂停
4、过十分钟,在远程查询分析器中执行:
   DBCC SHRINKDATABASE (statmemberdata)
   过了几分钟出现以下错误:
   “无法收缩日志文件 2(statmemberdata_log),因为所有的逻辑日志文件都在使用。

(所影响的行数为 2 行)

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。”

重新启动了数据服务器,启动完后马上有暂停了sql server的服务,然后又过了一段时间才运行DBCC SHRINKDATABASE的,提示说“所有的逻辑日志文件都在使用”呢,都试过好多次了,都是这样。

解决方案:

1:分离数据库   企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库  企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
   再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
   @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'



2:清空日志
DUMP  TRANSACTION  库名  WITH  NO_LOG   

再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

3: 如果想以后不让它增长
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M

4: 如果想以后不让它增长企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式:alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)5.设置为自动收缩企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"

转载于:https://www.cnblogs.com/lify0407/archive/2007/08/20/862644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值