天天看點

sql server 2008 mdf檔案太大了80多G 實際表的空間很小,該怎麼解決

sql server 2008 mdf檔案太大了80多G 實際表的空間很小

sql server 2008 mdf檔案太大了80多G 實際表的空間很小 已完成收縮。

select object_name(id) tablename,8*reserved/1024 reserved,rtrim(8*dpages/1024)+'Mb' used,8*(reserved-dpages)/1024 unused,8*dpages/1024-rows/1024*minlen/1024 free, rows,* from sysindexes where indid=1 order by reserved desc 檢視每個表使用空間很小,有資料的表已全部被删除了!

索引檢查也沒有問題,還有什麼辦法來檢查?

謝謝各位。

------解決方案--------------------

給你一個檢視資料庫表中容量大小的SQL代碼可以看到資料庫中的表有多少記錄,占多少空間以及索引的大小,以及未使用的空間:

==============檢視資料庫表的容量大小========start================================?============

Create Table #TableSpaceInfo --建立結果存儲表  

(

NameInfo NVarchar(50) ,  

RowsInfo int ,  

Reserved NVarchar(20) ,  

DataInfo NVarchar(20) ,  

Index_Size NVarchar(20) ,  

Unused NVarchar(20)  

)

Declare @TableName NVarchar(255) --表名稱

Declare @CmdSql NVarchar(1000)

Declare Info_Cursor Cursor For

Select o.Name  

From dbo.sysobjects o  

Where objectProperty(o.ID, N'IsTable') = 1 and o.Name not like N'#%%' Order By o.Name

Open Info_Cursor

Fetch Next From Info_Cursor  

Into @TableName

While @@FETCH_STATUS = 0  

Begin

If exists (Select * From dbo.sysobjects Where ID=object_ID(@tablename) and objectProperty(ID, N'IsUserTable') = 1)  

Execute sp_executesql N'Insert Into #TableSpaceInfo Exec sp_Spaceused @TBName', N'@TBName NVarchar(255)', @TBName = @TableName

Fetch Next From Info_Cursor  

Into @TableName  

End

Close Info_Cursor  

Deallocate Info_cursor  

GO

--itlearner注:顯示資料庫資訊  

sp_spaceused @UpdateUsage = 'TRUE'

--itlearner注:顯示表資訊  

Select *  

From #TableSpaceInfo  

Order By cast(left(lTrim(rTrim(Reserved)) , len(lTrim(rTrim(Reserved)))-2) As Int) Desc

Drop Table #TableSpaceInfo

================檢視資料庫表的容量大小=====end========================?==========================

轉載于:https://blog.51cto.com/10264855/1853980