一、查詢磁碟空間的使用方式及各資料庫資料檔案及記錄檔的大小及使用利用率:
1、查詢各個磁碟分割的剩餘空間:
Exec master.dbo.xp_fixeddrives
2、查詢資料庫的資料檔案及記錄檔的相關資訊(包括檔案組、當前檔案大小、檔案最大值、檔案增長設定、檔案邏輯名、檔案路徑等)
select * from [資料庫名].[dbo].[sysfiles]
轉換檔大小單位為MB:
select name, convert(float,size) * (8192.0/1024.0)/1024. from [資料庫名].dbo.sysfiles
3、查詢當前資料庫的磁碟使用方式:
Exec sp_spaceused
4、查詢資料庫伺服器各資料庫記錄檔的大小及利用率
DBCC SQLPERF(LOGSPACE)
二、發現我們的資料庫日誌滿了,如何清理日誌。
方法1:
代碼
DECLARE @dbname NVARCHAR(50)
SET @dbname='DNN50'
--1.清空日誌
exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')
--2.截斷交易記錄:
exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')
--3.收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減小
exec('DBCC SHRINKDATABASE(['+@dbname+'])')
--4.設定自動收縮
exec('EXEC sp_dboption '''+@dbname+''',''autoshrink'',''TRUE''')
方法2
第一步:
先備份整個資料庫以備不測
第二步:
備份結束後,在Query Analyzer中執行如下的語句:
exec sp_detach_db yourDBName,true --卸載這個DB在MSSQL中的註冊資訊
第三步:
到日誌的物理檔案所在的目錄中去刪除該記錄檔或者將該記錄檔移出該目錄
第四步:
在Query Analyzer中執行如下的語句:
exec sp_attach_single_file_db yourDBName,'d:\mssql7\data\yourDBName_data.mdf'
--以單檔案的方式註冊該DB,如果成功則MSSQL將自動為這個DB產生一個500K的記錄檔。