【转帖】关于sql server 2008 的mdf收缩问题

原帖地址:http://social.msdn.microsoft.com/forums/windowsazure/pt-br/388f92e1-9a1e-497d-bde1-6664561fd44e/sql2008-mdf

关于sql server 2008 的mdf收缩问题

USE 你的库名;
GO
-- 数据库空间使用情况
EXEC sp_spaceused;

-- 查下文件空间使用情况
SELECT 
    file_id, name,
    [文件大小(MB)] = size / 128.,
    [未使用空间(MB)] = (size - FILEPROPERTY(name, N'SpaceUsed')) / 128.
FROM sys.database_files

-- 表空间使用情况
DECLARE @tb_size TABLE(
    name sysname,
    rows int,
    size varchar(100),
    data_size varchar(100),
    INDEX_size varchar(100),
    unused_size varchar(100)
);
INSERT @tb_size
EXEC sp_msforeachtable '
sp_spaceused ''?''
'
SELECT * FROM @tb_size

用上面的语句检查一下你的数据库中的空间使用情况

其中,文件空间情况中的未使用空间表示你的文件可以通过 DBCC SHRINKFILE 来释放的磁盘空间

如果可以释放的空间很小, 那么你可以通过后面的查表空间的语句来查到是那些表占用了大的空间, 对于 unused_size 列的值很大的表, 你可以通过 REBUILD 聚焦索引(一般是主键) 的方式, 重组表的数据存储, 以便能够释放空间占用

再强调 原帖地址:http://social.msdn.microsoft.com/forums/windowsazure/pt-br/388f92e1-9a1e-497d-bde1-6664561fd44e/sql2008-mdf

你可能感兴趣的:(SQL Server 2008)