老服务器,硬盘72G。数据库里面是按日期生成表。每天生成一个。从12年到现在。MDF文件60G。数据库程序可能出了问题。自动收缩不能用了。于是手动drop了从12年的表。然后截止日至收缩数据库。
可从早上到现在,观察MDF文件大小没有变化。
早上磁盘空间剩余1.8G。现在1.67G。因为是服务系统,不能停服务。
是否跟不能停服务有关系?或者磁盘剩余空间太小了?
CREATE PROCEDURE dbo.deletetable
AS
DECLARE @Name as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select name from sysobjects where type='U' and name like 'abc2012%'
OPEN curObject
FETCH NEXT FROM curObject INTO @Name
WHILE(@@FETCH_STATUS=0)
BEGIN
print 'drop table '+@Name
exec('drop table '+@Name)
FETCH NEXT FROM curObject INTO @Name
END
close curObject
deallocate curObject
GO
exec deletetable
然后
DUMP TRANSACTION ** WITH NO_LOG
BACKUP LOG ** WITH NO_LOG
收缩
DBCC SHRINKDATABASE('abc')
------解决思路----------------------
业务不忙的时候,在数据库上右键,直接收缩。
------解决思路----------------------
一直在使用中的数据库有可能会无法压缩。
不要告诉我“不能停服务”这么重要的服务器没有故障处理方案。
断线,挂移到硬盘做数据库备份,删除数据库,重新恢复数据库,上线。
断线期间的业务按故障处理方案对应一下。
------解决思路----------------------
你可以考虑用别的介质(比如移动硬盘、刻碟,甚至U盘或者磁带)把一些历史数据移到一个新库,把辛苦备份出来拷走,再把数据库和本地磁盘的一些七七八八的清掉。但是这也不是根本解决的方法,最好还是加存储吧。反正你这规模的也不多钱
------解决思路----------------------
如果可能的话 ,lz 可以考虑加一块磁盘上去,新建一个文件在新磁盘上,将一些新建立的表都放到新磁盘上。
当然能暂停一下服务,直接换一块磁盘当然是最好不过了。
建议 :磁盘太老了,还是换一个磁盘来的干净。 5年以上的磁盘,如果有条件,一般是建议更换的。要是真的坏了,会比较麻烦。
------解决思路----------------------
才跑3年不到就硬盘满了,明显估计不足。这样重要的服务器升级硬件是完全必要的。
现在有计划地停一下是小麻烦,真到完全故障了就是大麻烦。
其实你不应该删数据,用当时的情况更容易说服客户进行硬件升级的。