1、 事務日誌簡介
作為大型的關係型資料庫,最重要的事情之一就是資料庫完整性,也就是說資料必須是正確的,不能因為一些不可知的突發事件(如突然掉電)損壞資料。為了避免這種情況,sql資料庫採用了兩步寫入磁碟的辦法,第一步先寫我做了什麼,比如開了乙個進貨單,這一步完成後,再執行第二步,把這個進貨單的內容寫入資料庫,這兩步都成功了,才算完成,有一步有問題,這個單據都不會記到資料庫中。這樣,您的事務操作(對資料庫的修改操作,查詢不記事務)的每一步都要記錄進日誌檔案,如果您不注意經常截斷事務日誌的話,隨著時間的增長,事務日誌會很快的增長,最後要比您的資料量大的多。可以經常看到,資料庫檔案只有幾十兆,而日誌檔案卻幾千兆的情況。
2、 截斷事務日誌
事務日誌分成兩部分,一部分是不活動的,也就是說這部分的操作都已經成功的寫入資料庫了,而另一部分是活動的,也就是說,這部分日誌,只是確認執行了上述第一步,還沒有確信已經寫入資料庫的部分。我們需要截斷的就是不活動的部分。這部分可以如下方法截斷:
backup log 『資料庫名』 with truncate_only
警告:在執行上述截斷日誌之後,強烈建議進行資料庫完全備份。
3、 縮小檔案大小
使用上述第2步就把不活動的日誌刪除了,但是檔案並沒有變小,只是把原先舊日誌占用的空間釋放了,又可以向裡面記入新的日誌了。要想把物理檔案也變小(比如已經幾千兆了),請使用如下命令:
dbcc shrinkdatabase (資料庫名)
執行上述命令後就可以把日誌檔案縮小了(一般都縮為1m左右)
4、 把資料檔案或日誌檔案的增長不受限制
如果您做不到經常維護資料庫,不能經常的截斷日誌,日誌檔案就會逐漸變大,一旦大到您設定的大小限制,日誌就再也不能寫入了,您對資料庫的所有改變操作也就無法進行了,這時候您就需要用上面的方法把日誌檔案截斷。不過,您可以把檔案的大小設定大一些或不受限制,請在企業管理器中設定資料庫屬性即可。也可以執行下述命令:
alter database 資料庫名 modify file (name = 邏輯檔名,maxsize = unlimited)
此處的邏輯檔名就是您在企業管理器中看到的檔名。
說明:
微軟公司的sql 2000有個小錯誤,有時候會報告邏輯檔名不存在的問題,這時候您就應該看看真正的邏輯檔名是什麼,如果您的資料庫是從乙個備份檔案中還原的,那麼可以使用下面的命令看看邏輯檔名到底是什麼,此處假設您已經把備份檔案複製到c盤的根目錄,備份檔案名為database.bak:
restore filelistonly from disk = 『c:\database.bak』
執行上述命令後,可以看出所有的邏輯檔名(logicalname列的內容),取出這裡的邏輯檔名,比如「真檔名」,執行如下命令
alter database 資料庫名 modify file (name = 真檔名, maxsize = unlimited)
這個命令就會成功,再到企業管理器中去看,就發現檔案大小已經無限制了。
5、 資料庫日常維護
為了讓資料庫更好的工作,不至於影響業務,日常需要對資料庫進行維護,一般分為以下幾個方面:
a. 日常的備份。建議每天進行備份,如果資料庫太大,每天全庫備份不現實,可以採用一周完全備份一次,每天差異備份一次或兩次
b. 維護索引。索引能夠大幅的提高查詢效能,但是隨著資料碎片的增加,效能會越來越差,所以要經常的維護索引,可以根據具體情況,每週或每月維護一次索引。
c. 截斷日誌。根據業務量的大小,可以不定期的截斷日誌。
。ps:這是sql資料庫日記收縮的資料,很有用,至少解決了我的問題了~~補充一點:dbcc shrinkdatabase
可以加引數讓資料庫收縮到指定大小,如dbcc shrinkdatabase(db1,2)
將把名為db1的資料庫日記收縮到2m。
SQL2000清理日誌檔案
最好備份日誌,以後可通過日誌恢復資料。以下為日誌處理方法 一般不建議做第4,6兩步 第4步不安全,有可能損壞資料庫或丟失資料 第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復.下面的所有庫名都指你要處理的資料庫的庫名 1.清空日誌 dump transaction 庫名 wit...
SQL2000清理日誌檔案
最好備份日誌,以後可通過日誌恢復資料。以下為日誌處理方法 一般不建議做第4,6兩步 第4步不安全,有可能損壞資料庫或丟失資料 第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復.下面的所有庫名都指你要處理的資料庫的庫名 1.清空日誌 dump transaction 庫名 wit...
SQL2000 日誌壓縮
從企業管理器和程式 兩種方法來介紹ms sql server 2000日誌壓縮的方法,希望對大家有所幫助!1 程式裡面的方法 壓縮資料庫日誌 1 備份日誌 exec backup log dbname with no log 2 截斷事務日誌 exec dump transaction dbname...