国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

SQL使用--Shrink所有數(shù)據(jù)庫的Log

2024-07-21 02:44:54
字體:
供稿:網(wǎng)友
數(shù)據(jù)處理是當(dāng)前數(shù)據(jù)庫常見的應(yīng)用。一些數(shù)據(jù)庫組成DATA mart從數(shù)據(jù)源里抽取關(guān)心的表進行聚合,將結(jié)果推送到算法中進行處理,從而高性能的回答用戶的查詢。

總所周知,Log文件是記錄數(shù)據(jù)庫操作的文件,對數(shù)據(jù)庫的完整性,一致性有著重要的意義。作為數(shù)據(jù)處理的一個常見后果是Log文件的超級龐大。雖然將數(shù)據(jù)庫的恢復(fù)模式設(shè)置成Simple可以提醒數(shù)據(jù)庫盡量使用已有的Log空間,而不是申請新的,后者將會導(dǎo)致文件的增長。但是對于活動的事務(wù),如果一個事務(wù)中記錄的Log 行數(shù)很多,必然會導(dǎo)致Log文件的龐大。有時這種事務(wù)是不能避免的,因為至少一個SQL語句就是一個天然的事務(wù)。加入你的Update語句涉及到3千萬行數(shù)據(jù),結(jié)果必然導(dǎo)致眾多的Log行被寫入,當(dāng)Update結(jié)束的時候,log文件就會增加到200G。

問題是當(dāng)事務(wù)結(jié)束后,log文件并不會因為事務(wù)已經(jīng)提交而自動縮短。后果就是10幾個數(shù)據(jù)庫的log 文件都處在自己的最大值上,也許這需要幾個T的空間,但事實上,同一時刻只有一個數(shù)據(jù)庫在活動,也就是說500G就夠了。

下面的這個SQL可以自動縮短數(shù)據(jù)庫服務(wù)器上所有的Log文件。

declare @ssql nvarchar(4000)
set @ssql= '
        if ''?'' not in (''tempdb'',''master'',''model'',''msdb'') begin
        use [?]
        declare @tsql nvarchar(4000) set @tsql = ''''
        declare @iLogFile int
        declare LogFiles cursor for

        --找出所有的Log文件,Log文件的status是0x40
        select fileid from sysfiles where  status & 0x40 = 0x40
        open LogFiles
        fetch next from LogFiles into @iLogFile
        while @@fetch_status = 0
        begin

          --使用DBCC名字縮短Log文件
          set @tsql = @tsql + ''DBCC SHRINKFILE(''+cast(@iLogFile as varchar(5))+'', 1) ''
          fetch next from LogFiles into @iLogFile
        end

        --DBCC shrink只能釋放標(biāo)記為無效的Log區(qū)段,使用backup log可以完成這個標(biāo)記
        set @tsql = @tsql + '' BACKUP LOG [?] WITH TRUNCATE_ONLY '' + @tsql
        --PRint @tsql
        exec(@tsql)
        close LogFiles
        DEALLOCATE LogFiles
        end'
--依次遍歷所有的數(shù)據(jù)庫,用數(shù)據(jù)庫名字替換@ssql中的?,并執(zhí)行語句
exec sp_msforeachdb @ssql 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 会昌县| 长葛市| 江山市| 富锦市| 万宁市| 新丰县| 光泽县| 辰溪县| 太仓市| 合阳县| 大同县| 贵溪市| 遵义市| 遵义县| 定襄县| 吉隆县| 富平县| 冕宁县| 蕉岭县| 南澳县| 阿拉善左旗| 武冈市| 北辰区| 上犹县| 黔西| 吉林市| 许昌市| 荆州市| 玛沁县| 鸡泽县| 巴彦县| 吉林市| 辽阳县| 同德县| 中西区| 全椒县| 洛扎县| 兴山县| 贺兰县| 班玛县| 林周县|