sqlserver 删除表占用空间随笔

当SQL Server硬盘空间紧张时,通过删除表中历史记录来释放空间。但由于操作不当,起初空间未减少反而增加。通过查询表占用空间,定位到大表并采用按天分区的删除策略。在删除分区数据后,发现空间未有效释放,原来是未分配空间(Unallocated Space)增大。最终了解到,未分配空间是已占用但未使用的部分,需要DBA的清理任务来解决。
摘要由CSDN通过智能技术生成

sqlserver服务器的硬盘空间只有几个G了,尝试清理下表占用空间

SELECT   a.name, b.rows
FROM      sysobjects AS a INNER JOIN
                 sysindexes AS b ON a.id = b.id
WHERE   (a.type = 'u') AND (b.indid IN (0, 1))
ORDER BY b.rows DESC


看了下排名前几的表,条数很多(此处犯了一个错误,不应该查条数,而应该查表占用空间)

尝试删除一些历史的记录数,网上查了下,直接根据条件删影响太大,所以循环删除,每次删除1W条,由于这是个按天分区的分区表,所以再加上分区,sql如下:

set rowcount 0;
declare @count int;
set @count = datepart(dayofyear,'2017-08-05');
while 1 = 1
begin
	while 1 = 1
	begin
	delete top(10000) from custom_file_given_Index_log where day =
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值