鏡像數據庫日誌截斷方法

鏡像數據庫若是主體數據庫日誌過大,能夠在主體數據庫上定時做日誌備份(好比天天1次)
備份日誌能夠截斷日誌,讓日誌空間能夠循環使用,這樣可使日誌文件的大小再也不增加。
具體步驟,在主體數據庫上設置job,天天執行一次sql(不是鏡像數據庫):
BACKUP LOG 數據庫名 TO DISK = 'h:\log20111122.bak'

執行完成後,日誌文件大小並不會變小,只是文件使用率會降低


相關知識:
一、查看日誌文件大小和使用率的sql
USE 數據庫名
GO
SELECT name, data_space_id 文件組id, size/128 [文件大小(兆)],
    FILEPROPERTY(name, 'SpaceUsed')/128 [已用空間(兆)],
    size/128 - FILEPROPERTY(name, 'SpaceUsed')/128 [未用空間(兆)],
    FILEPROPERTY(name, 'SpaceUsed')*100.0/size [使用率(%)],
    max_size/128 [最大值(兆)], growth 增加值, is_percent_growth 是否百分比增加, physical_name 物理路徑
FROM sys.database_files a

也能夠用下面的sql查看日誌文件使用率(注:要管理員纔有權限,須要技術部去執行)
DBCC SQLPERF(LOGSPACE)
獲得結果列以下:
Database Name    Log Size (MB)    Log Space Used (%)
數據庫名         日誌文件大小    日誌文件使用率
這個使用率越小越好,備份日誌後,使用率會下降,今天Newresourcedb數據庫的日誌變化狀況:
09點 271385M   99.98%
執行日誌備份,耗時3小時後變成
14點 272685M   47.93%
再執行日誌備份,耗時1分鐘後變成
15點 272685M   1.13%

二、鏡像數據庫選項的相關知識
數據庫鏡像概述
http://msdn.microsoft.com/zh-cn/library/ms189852.aspx
異步數據庫鏡像(高性能模式)
http://msdn.microsoft.com/zh-cn/library/ms187110(v=SQL.90).aspx
同步數據庫鏡像(高安全性模式)
http://msdn.microsoft.com/zh-cn/library/ms179344(v=SQL.90).aspx
同步和異步的主要區別就是
同步時,主數據庫要等鏡像數據庫日誌也寫入磁盤後,才返回告訴咱們成功
而異步,則是主數據庫把日誌發給鏡像數據庫,不等鏡像響應,就返回告訴咱們成功
 
三、 查表結構
 

create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'"
select name as 表名,rows as  行數,
ltrim(str(convert(decimal(18,2),replace(reserved,' KB',''))/1024)) + 'MB' as 總分配磁盤空間,
ltrim(str(convert(decimal(18,2),replace(data,' KB',''))/1024)) + 'MB' as 數據佔用磁盤空間,
ltrim(str(convert(decimal(18,2),replace(index_size,' KB',''))/1024)) + 'MB' as 索引佔用磁盤空間,
unused as 可用空間
from #t  ORDER BY 行數 desc
select count(1) as 表數量,sum(rows) as 總行數,sum(convert(int,replace(reserved,' KB',''))/1024) as '總佔用空間(MB)',sum(convert(int,replace(data,' KB',''))/1024) as '數據總佔用空間(MB)',sum(convert(int,replace(index_size,' KB',''))/1024) as '索引總佔用空間(MB)' from #tsql

相關文章
相關標籤/搜索