我有个数据库,mdf文件已经达到40多G,可是实际数据才23G。现在想把mdf收缩到接近实际数据空间。
我通过首先设置为简单模式,然后右键数据库-任务-收缩-数据文件,在收缩操作,选择在释放未使用的空间前重新组织页,将文件收缩到:我输入25G。然后确定,收缩很久最后还是失败了。想请教下应该怎么操作!数据库
我通过首先设置为简单模式,然后右键数据库-任务-收缩-数据文件,在收缩操作,选择在释放未使用的空间前重新组织页,将文件收缩到:我输入25G。然后确定,收缩很久最后还是失败了。想请教下应该怎么操作!数据库
可能是你的服务器经常断电!注意一下!
用这个生成插入语句
SELECT TOP 100 Percent
'truncate table 新数据库..'+sysobjects.name+
' insert into 新数据库..'+sysobjects.name+' select * from 变大的数据库..'+sysobjects.name,
sysindexes.rows
FROM sysindexes with(nolock)
JOIN sysobjects with(nolock)
ON sysindexes.id = sysobjects.id AND sysobjects.xtype = 'u'
WHERE sysindexes.indid in(0, 1) and sysindexes.rows<>0
ORDER By sysobjects.name ASC
用这个查询没有插入的数据
----------------------------------------
select isnull(a.name,b.name) name ,isnull (a.rows,0) as rows,isnull (b.rows,0) as rows
from
(SELECT TOP 100 Percent
b.name,
a.rows
FROM 变大的数据库.dbo.sysindexes a with(nolock)
JOIN 变大的数据库.dbo.sysobjects b with(nolock)
ON a.id = b.id AND b.xtype = 'u'
WHERE a.indid in(0, 1)
) a FULL JOIN
(SELECT TOP 100 Percent
sysobjects.name,
sysindexes.rows
FROM sysindexes with(nolock)
JOIN sysobjects with(nolock)
ON sysindexes.id = sysobjects.id AND sysobjects.xtype = 'u'
WHERE sysindexes.indid in(0, 1) ) b
ON a.name=b.name
order by isnull (a.rows,0) desc