為了最近測試資料的成長,所以順手將這些資料作紀錄,畢竟資料庫的管理,常使用到這些查詢。
以後就可以直接引用。
查詢的過程中,出現以下的錯誤訊息!
訊息 3032 ,層級 16 ,狀態 2 ,行 1
這個陳述式不支援一或多個選項 (no_log) 。請查閱文件集,了解支援的選項。
意外發現原來SQL 2008 取消了部分的查詢語法與功能,如果如MSDN文件所說的,也就是以後要截斷交易記錄,必須要利用其他方式,或是利用正規的語法備份。雖然不方便,但是依照正常的邏輯推論,的確是應該這樣沒錯!
-- 查詢資料庫使用空間
USE [DB_NAME]
SET NOCOUNT
ON
DECLARE @tDBSize TABLE
( DBName SYSNAME DEFAULT ( [DB_NAME] ()),
Fileid INT , FileGroup INT , TotalExtents INT ,
UsedExtents INT , Name SYSNAME , FileName NVARCHAR ( 4000 ))
DECLARE @tLogSize TABLE
( DBName sysname , logsize float , used
float , status int )
INSERT @tDBSize ( Fileid , FileGroup , TotalExtents , UsedExtents , Name , FileName )
EXEC ( 'DBCC showfilestats' )
INSERT INTO @tLogSize
EXECUTE ( 'DBCC SQLPERF(LOGSPACE)' )
SELECT D . DBName N' 資料庫 ' , D . Name N' 資料檔案 ' ,
TotalExtents * 64.0 / 1024 N' 資料檔案使用硬碟空間 (MB)' ,
UsedExtents * 64.0 / 1024 N' 資料實際使用空間 (MB)' ,
logsize N' 交易記錄檔整體使用的硬碟空間 (MB)' ,
( logsize * used / 100 ) N' 交易記錄檔整體的實際使用 (MB)'
FROM
@tLogSize L INNER JOIN @tDBSize D
ON L . DBName = D . DBName
-- 截斷交易記錄檔
/*
當資料庫使用簡單復原模式時,便會自動截斷交易記錄。
如果您必須從資料庫中移除記錄備份鏈結,請切換到簡單復原模式。
*/
--01 將資料庫 [DB_NAME]
切換為「簡單復原模式」,便會自動截斷交易記錄。
ALTER DATABASE [DB_NAME]
SET RECOVERY SIMPLE
GO
--02 若決定要備份交易記錄檔 (*.ldf) ,再將資料庫 [DB_NAME] 切換回「完整復原模式」
ALTER DATABASE [DB_NAME]
SET RECOVERY FULL
GO
-- 使用 BACKUP LOG ... WITH NO_LOG(SQL 2008 不支援)
BACKUP LOG [DB_NAME]
WITH NO_LOG
-- 或是,使用 BACKUP LOG ... WITH TRUNCATE_ONLY(SQL 2008 不支援)
BACKUP LOG [DB_NAME]
WITH TRUNCATE_ONLY
-- 顯示資料庫檔案,找出交易記錄檔的邏輯檔名
EXEC sp_helpdb '[DB_NAME]' --[DB_NAME] :資料庫名稱
--Medical_Data (DB NAME)
--Medical_Log (DB Log NAME)
-- ()壓縮交易記錄檔
DBCC SHRINKFILE ( Medical_Log , 1024 ) --Medical_Log : ldf 檔的邏輯檔名,用 EXEC sp_helpdb 可以找出
參考資料:
德瑞克: SQL Server 學習筆記
交易記錄檔已滿、爆掉;截斷交易記錄檔。(
The transaction log for database 'DB1' is full. ;Transaction Log Truncation )
管理交易記錄
http://technet.microsoft.com/zh-tw/library/ms345382.aspx
SQL Server 2008 中已停止的 Database Engine功能
http://msdn.microsoft.com/zh-tw/library/ms144262.aspx
SQL Server 2008 R2 中已被取代的 Database Engine功能
http://msdn.microsoft.com/zh-tw/library/ms143729.aspx
簡單復原模式下的備份
http://technet.microsoft.com/zh-tw/library/ms191164.aspx
交易記錄截斷
http://technet.microsoft.com/zh-tw/library/ms189085.aspx
如何避免 SQL Server資料庫的交易記錄檔超出預期大小
http://support.microsoft.com/kb/873235/zh-tw