在SQL Server2000中要刪除日志釋放磁盤空間得分兩步進行:
·執行backup log語句來刪除不活動日志,但此時磁盤空間并未釋放;
·收縮數據庫釋放未使用的磁盤空間;
下邊詳細說明:
①.執行backup log語句刪除不活動日志
執行sql語句:backup log Northwind with no_log,不活動日志將被刪除,下圖為sql語句執行前后數據庫大小:


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

說明:第②步操作也可以通過執行sql語句"dbcc shrinkdatabase(Northwind,1) "來進行,但實際發現執行非常慢!后測試可使用dbcc shrinkfile(n)語句,速度快很多,n的值可執行'select * from sysfiles"來獲取!
總結t-sql:
復制內容到剪貼板程序代碼
/*第一步:查詢出文件編號,修改@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)