為了最近測試資料的成長,所以順手將這些資料作紀錄,畢竟資料庫的管理,常使用到這些查詢。

以後就可以直接引用。

 

查詢的過程中,出現以下的錯誤訊息!

訊息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_Logldf檔的邏輯檔名,用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

 

炎龍牙 發表在 痞客邦 PIXNET 留言(0) 人氣()