自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Delphi如何清空日志文件

開發(fā) 開發(fā)工具
本文是筆者在Delphi學(xué)習(xí)過程中,得出的個(gè)人體會(huì),介紹了Delphi中如何清空日志文件的具體方法,希望能與大家共同分享一下。

  Delphi如何清空日志文件?

  問題的引出:我們?cè)跀?shù)據(jù)庫切割過程中,就是將單據(jù)數(shù)據(jù)中某個(gè)日期以前的數(shù)據(jù)先復(fù)制到新的數(shù)據(jù)庫中(select ... into ...),然后再將原來數(shù)據(jù)庫中的這些數(shù)據(jù)刪除。這樣操作在數(shù)量很大的數(shù)據(jù)庫上時(shí),其日志文件的增長也是驚人的。我復(fù)制一個(gè)48萬條記錄的表時(shí),***發(fā)現(xiàn)僅這一個(gè)表的操作就使新數(shù)據(jù)庫的日志文件增加了170MB,如果不加清理,那就會(huì)被日志文件占用大量寶貴的磁盤空間。況且,我們轉(zhuǎn)移到的新建數(shù)據(jù)庫的作用也只是用來查詢,以后不會(huì)有任何Insert、Update、Delete操作的,要這些日志文件沒有什么用處,因此必須在向它轉(zhuǎn)移數(shù)據(jù)的過程中做一些縮小日志文件的處理,怎么辦??問題由此而生...

  1. 處理過程中不記錄日志

  設(shè)置方法如下:企業(yè)管理器中打開對(duì)應(yīng)數(shù)據(jù)庫的“屬性”,頁框“選項(xiàng)”中將“模型”改為“簡單”。這樣設(shè)置的結(jié)果是對(duì)此數(shù)據(jù)庫的任何操作都將不記錄事務(wù)日志。對(duì)應(yīng)的SQL為:EXEC sp_dboption @pdbName, 'trunc. log on chkpt.', 'TRUE'

  但是,我們經(jīng)過測(cè)試發(fā)現(xiàn):啟用此功能后,我們?cè)趯?duì)這個(gè)數(shù)據(jù)庫操作時(shí),就不能用事務(wù)操作了,程序執(zhí)行到BeginTranSaction時(shí)就報(bào)錯(cuò),不能執(zhí)行下去,由于我們不能在對(duì)此庫的操作中保證100%的正確性,因此我們還需要事務(wù),因此這種方法適用空間有限,也不能滿足我們程序的需求。

  我們還得繼續(xù)查找…

  2. 處理過程中允許記錄日志,但要對(duì)日志文件進(jìn)行處理,時(shí)時(shí)縮小它。

  SQL Server的聯(lián)機(jī)幫助告訴我們:

  在下列情況下,日志文件的物理大小將減少:

  執(zhí)行 DBCC SHRINKDATABASE 語句時(shí)。

  執(zhí)行引用日志文件的 DBCC SHRINKFILE 語句時(shí)。

  自動(dòng)收縮操作發(fā)生時(shí)。

  下面我們逐個(gè)分析這三個(gè)方案:

 ?、?DBCC SHRINKDATABASE:收縮特定數(shù)據(jù)庫的所有數(shù)據(jù)和日志文件,包含我們的需求,但也大于我們的需求。此方案可用,但不要著急,給人的感覺是買了一件能穿的衣服,但尺寸大了些,穿在身上有點(diǎn)不舒服,我們接著分析以下兩個(gè)方案。

  ② DBCC SHRINKFILE:收縮相關(guān)數(shù)據(jù)庫的指定數(shù)據(jù)文件或日志文件大小。與方案1的區(qū)別僅一字之差:“和”與“或”,相當(dāng)于把方案1拆成兩步來執(zhí)行,我們需要的就是收縮日志文件。因此,它對(duì)我們來說顯得比較合適,有點(diǎn)量體裁衣的感覺。但還有沒有更好的呢,我們來看第三個(gè)方案。

 ?、圩詣?dòng)收縮:數(shù)據(jù)庫也可設(shè)置為按給定的時(shí)間間隔自動(dòng)收縮,服務(wù)器定期檢查每個(gè)數(shù)據(jù)庫中的空間使用情況。如果發(fā)現(xiàn)數(shù)據(jù)庫中有大量閑置空間,而且它的 autoshrink 選項(xiàng)設(shè)置為 true,SQL Server 就縮小該數(shù)據(jù)庫中的文件大小。它是周期性的執(zhí)行DBCC SHRINKDATABASE,既然方案1已經(jīng)是一件尺寸大了一些的衣服,則此方案就相當(dāng)于又穿上了N件大尺寸衣服,一件就已經(jīng)夠了,我還要那么多干嘛呢?

  綜合對(duì)比發(fā)現(xiàn),方案2正是我們需要的。

  1.   DBCC SHRINKFILE ('+Trim(edDBMC.Text)+'_Log, TRUNCATEONLY)  
  2.  

  經(jīng)過這個(gè)語句處理以后,日志文件將回到它的最小狀態(tài)504KB,任何的日志記錄都將清空。

  再結(jié)合我們的工具,復(fù)制完一個(gè)表之后,我們就執(zhí)行方案2,處理過程中日志文件暫時(shí)占用的***空間也就是處理***數(shù)據(jù)表時(shí)產(chǎn)生的日志空間,但***都將清空,顯示為500多KB,相對(duì)于龐大的數(shù)據(jù)文件而言,微之戡微。

【編輯推薦】

  1. Delphi基礎(chǔ)開發(fā)技巧
  2. Delphi編程讀取txt文件數(shù)據(jù)
  3. 如何在Delphi中自動(dòng)錄入數(shù)據(jù)
  4. 基于Delphi的屏幕抓圖技術(shù)的實(shí)現(xiàn)
  5. Delphi初學(xué)者應(yīng)小心的六大問題
責(zé)任編輯:韓亞珊 來源: 編程愛好者
相關(guān)推薦

2010-09-01 16:17:40

SQL刪除日志

2012-02-03 09:55:06

Delphi

2023-09-11 11:31:53

VLC日志文件

2011-03-16 16:41:57

清空iptables

2019-10-21 08:56:36

Linux日志文件拆分

2021-08-30 13:08:54

Linux實(shí)時(shí)監(jiān)控日志文件

2011-04-06 13:56:36

Delphi

2021-03-11 23:43:20

JavaScript數(shù)組開發(fā)

2010-10-13 15:01:03

MySQL更新日志文件

2010-07-08 10:14:57

SQLServer日志

2019-03-21 09:00:00

UbuntuLinux清空垃圾

2021-12-29 15:02:48

Linux清空文件

2010-10-29 15:07:33

oracle日志

2020-03-24 08:00:00

Linux日志文件

2009-02-02 17:21:58

日志文件維護(hù)MySQL日志文件

2010-03-09 17:57:46

2011-04-06 13:40:48

Delphi

2010-09-13 14:12:21

SQL Server日

2014-02-17 15:27:19

Linux系統(tǒng)

2016-10-21 14:49:32

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)