為了最近測試資料的成長,所以順手將這些資料作紀錄,畢竟資料庫的管理,常使用到這些查詢。
以後就可以直接引用。
查詢的過程中,出現以下的錯誤訊息!
訊息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
留言列表