在SQL Server2000中要?jiǎng)h除日志釋放磁盤空間得分兩步進(jìn)行:
·執(zhí)行backup log語句來刪除不活動(dòng)日志,但此時(shí)磁盤空間并未釋放;
·收縮數(shù)據(jù)庫釋放未使用的磁盤空間;
下邊詳細(xì)說明:
①.執(zhí)行backup log語句刪除不活動(dòng)日志
執(zhí)行sql語句:backup log Northwind with no_log,不活動(dòng)日志將被刪除,下圖為sql語句執(zhí)行前后數(shù)據(jù)庫大?。?/span>


但在資源管理器中查看,你會(huì)發(fā)現(xiàn)剩余的磁盤空間并沒有多出來,原因是日志刪除了,但占用的空間未被釋放,所以得再收縮下數(shù)據(jù)庫來釋放磁盤空間。
說明:這個(gè)步驟也有人是執(zhí)行"dump transaction Northwind with no_log",但SQL Server2000幫助文件中說dump transaction和backup log是同義的,保險(xiǎn)起見這兩句可都執(zhí)行一下。
SQL Server2000幫助相關(guān)說明:
引用內(nèi)容
DUMP DATABASE 和 DUMP TRANSACTION 語句與 BACKUP DATABASE 和 BACKUP LOG 語句同義。在以后的版本中可能會(huì)取消對(duì) DUMP DATABASE 和 DUMP TRANSACTION 語句的支持。
考慮刪除所有對(duì) DUMP DATABASE 的引用,并替換為對(duì) BACKUP DATABASE 的引用??紤]刪除所有對(duì) DUMP TRANSACTION 的引用,并替換為對(duì) BACKUP LOG 的引用。
考慮刪除所有對(duì) DUMP DATABASE 的引用,并替換為對(duì) BACKUP DATABASE 的引用??紤]刪除所有對(duì) DUMP TRANSACTION 的引用,并替換為對(duì) BACKUP LOG 的引用。
②.收縮數(shù)據(jù)庫釋放未使用的磁盤空間
收縮數(shù)據(jù)庫會(huì)刪除每個(gè)文件中未使用的頁,以釋放出磁盤空間。右鍵單擊數(shù)據(jù)庫,選擇"所有任務(wù)→收縮數(shù)據(jù)庫",點(diǎn)確定,你會(huì)看到剩余磁盤空間多了很多出來,數(shù)據(jù)庫大小也變化了:

說明:第②步操作也可以通過執(zhí)行sql語句"dbcc shrinkdatabase(Northwind,1) "來進(jìn)行,但實(shí)際發(fā)現(xiàn)執(zhí)行非常慢!后測(cè)試可使用dbcc shrinkfile(n)語句,速度快很多,n的值可執(zhí)行'select * from sysfiles"來獲取!
總結(jié)t-sql:
/*第一步:查詢出文件編號(hào),修改@fileid值*/
select * from sysfiles
/*第二步:刪除日志并釋放空間*/
declare @table nvarchar(50),@fileid int
set @table = 'Northwind'
set @fileid = 2
dump transaction @table with no_log
backup log @table with no_log
dbcc shrinkfile(@fileid)
select * from sysfiles
/*第二步:刪除日志并釋放空間*/
declare @table nvarchar(50),@fileid int
set @table = 'Northwind'
set @fileid = 2
dump transaction @table with no_log
backup log @table with no_log
dbcc shrinkfile(@fileid)