茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671219 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PI20101106_00001.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2017/9/30 3:46:39

SQL 語法:查詢資料庫使用空間與壓縮資料庫的Log資料

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

以後就可以直接引用。

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

訊息 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


原文出處:SQL 語法:查詢資料庫使用空間與壓縮資料庫的Log資料 @ 混亂....逐漸擴散 :: 痞客邦 PIXNET ::
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|