本發(fā)明涉及SQL Server數(shù)據(jù)庫技術(shù)領(lǐng)域,更具體地說,涉及一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法及系統(tǒng)。
背景技術(shù):
SQL Server數(shù)據(jù)庫廣泛用于各種應(yīng)用數(shù)據(jù)處理,但是由于SQL Sever數(shù)據(jù)庫日志增加過快,導(dǎo)致大量占用磁盤空間,對磁盤空間造成無效使用。目前解決此問題最常用方式為將歷史數(shù)據(jù)刪除來減小日志,但是這種方式,不能滿足用戶日后對日志查找的需求。
因此,如何實現(xiàn)減小SQL Server數(shù)據(jù)庫日志,指導(dǎo)企業(yè)IT運維人員對SQL Server更好維護,更加有效利用磁盤空間使用是本領(lǐng)域技術(shù)人員需要解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法及系統(tǒng),以實現(xiàn)減小SQL Server數(shù)據(jù)庫日志,指導(dǎo)企業(yè)IT運維人員對SQL Server更好的維護,更加有效利用磁盤空間。
為實現(xiàn)上述目的,本發(fā)明實施例提供了如下技術(shù)方案:
一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法,包括:
創(chuàng)建目標數(shù)據(jù)庫,停止運行原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫;所述原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫的類型均為SQL Server數(shù)據(jù)庫;
刪除所述目標數(shù)據(jù)庫的log文件,并以所述原始數(shù)據(jù)庫的mdf文件替換所述目標數(shù)據(jù)庫的mdf文件;
啟動所述目標數(shù)據(jù)庫,對所述目標數(shù)據(jù)庫的物理和邏輯一致性進行檢查,若所述目標數(shù)據(jù)庫不存在一致性問題,則將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫。
其中,所述創(chuàng)建目標數(shù)據(jù)庫之前,還包括:
判斷所述原始數(shù)據(jù)庫的log文件所占內(nèi)存值是否大于預(yù)定閾值;若是,則執(zhí)行所述創(chuàng)建目標數(shù)據(jù)庫的步驟。
其中,將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫之后,還包括:
生成所述原始數(shù)據(jù)庫被所述目標數(shù)據(jù)庫替換的提示信息,并將所述提示信息發(fā)送至預(yù)定終端。
其中,啟動所述目標數(shù)據(jù)庫之后,將所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為置疑;檢查所述目標數(shù)據(jù)庫不存在一致性問題后,將所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為正常。
其中,將所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為置疑之后,允許對所述目標數(shù)據(jù)庫的系統(tǒng)目錄進行修改;將所述原始數(shù)據(jù)庫的狀態(tài)設(shè)置為正常之后,拒絕對所述目標數(shù)據(jù)庫的系統(tǒng)目錄進行修改。
其中,將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫之后,還包括:
將所述原始數(shù)據(jù)庫中的log文件進行壓縮存儲。
一種SQL Server數(shù)據(jù)庫的日志優(yōu)化系統(tǒng),包括:
創(chuàng)建模塊,用于創(chuàng)建目標數(shù)據(jù)庫,停止運行原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫;所述原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫的類型均為SQL Server數(shù)據(jù)庫;
刪除模塊,用于刪除所述目標數(shù)據(jù)庫的log文件;
替換模塊,用于以所述原始數(shù)據(jù)庫的mdf文件替換所述目標數(shù)據(jù)庫的mdf文件;
檢查模塊,用于啟動所述目標數(shù)據(jù)庫,對所述目標數(shù)據(jù)庫的物理和邏輯一致性進行檢查,若所述目標數(shù)據(jù)庫不存在一致性問題,則將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫。
其中,還包括:
判斷模塊,用于判斷所述原始數(shù)據(jù)庫的log文件所占內(nèi)存值是否大于預(yù)定閾值;若是,則觸發(fā)所述創(chuàng)建模塊。
其中,還包括:
生成模塊,用于生成所述原始數(shù)據(jù)庫被所述目標數(shù)據(jù)庫替換的提示信息;
發(fā)送模塊,用于將所述提示信息發(fā)送至預(yù)定終端。
其中,還包括:
壓縮模塊,用于將所述原始數(shù)據(jù)庫中的log文件進行壓縮存儲。
通過以上方案可知,本發(fā)明實施例提供的一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法及系統(tǒng),包括:創(chuàng)建目標數(shù)據(jù)庫,停止運行原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫;所述原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫的類型均為SQL Server數(shù)據(jù)庫;刪除所述目標數(shù)據(jù)庫的log文件,并以所述原始數(shù)據(jù)庫的mdf文件替換所述目標數(shù)據(jù)庫的mdf文件;啟動所述目標數(shù)據(jù)庫,對所述目標數(shù)據(jù)庫的物理和邏輯一致性進行檢查,若所述目標數(shù)據(jù)庫不存在一致性問題,則將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫;
可見,在本實施例中,通過創(chuàng)建一個與原始數(shù)據(jù)庫類型一直的目標數(shù)據(jù)庫,并將原始數(shù)據(jù)庫中的mdf文件覆蓋目標數(shù)據(jù)庫,并在檢查成功后,通過目標數(shù)據(jù)庫代替原始數(shù)據(jù)庫,目標數(shù)據(jù)庫中的log文件相比原始數(shù)據(jù)庫中的log文件大大縮小,減少磁盤的無效使用,使磁盤空間的使用更加合理。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例公開的一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法流程示意圖;
圖2為本發(fā)明實施例公開的一種SQL Server數(shù)據(jù)庫的日志優(yōu)化系統(tǒng)結(jié)構(gòu)框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而 不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例公開了一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法及系統(tǒng),以實現(xiàn)減小SQL Server數(shù)據(jù)庫日志,指導(dǎo)企業(yè)IT運維人員對SQL Server更好的維護,更加有效利用磁盤空間。
參見圖1,本發(fā)明實施例提供的一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法,包括:
S101、創(chuàng)建目標數(shù)據(jù)庫,停止運行原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫;所述原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫的類型均為SQL Server數(shù)據(jù)庫;
其中,所述創(chuàng)建目標數(shù)據(jù)庫之前,還包括:
判斷所述原始數(shù)據(jù)庫的log文件所占內(nèi)存值是否大于預(yù)定閾值;若是,則執(zhí)行所述創(chuàng)建目標數(shù)據(jù)庫的步驟。
具體的,在本實施例中,可以檢測當前使用的數(shù)據(jù)庫的日志是否大于預(yù)定閾值;若是,則自動執(zhí)行本方案。并且可以將本方案中創(chuàng)建的新的目標數(shù)據(jù)庫可以命名為prestat,創(chuàng)建結(jié)束后將原始數(shù)據(jù)庫和新建的目標數(shù)據(jù)庫停止運行,為執(zhí)行S102做準備。
S102、刪除所述目標數(shù)據(jù)庫的log文件,并以所述原始數(shù)據(jù)庫的mdf文件替換所述目標數(shù)據(jù)庫的mdf文件;
在本方案中,需要將目標數(shù)據(jù)庫中的log文件刪除,并將原始數(shù)據(jù)庫的mdf文件覆蓋目標數(shù)據(jù)庫的mdf文件,需要說明的是,mdf文件是primary datafile的縮寫,是MASTER數(shù)據(jù)庫的數(shù)據(jù)庫文件。MASTER數(shù)據(jù)庫是存儲所有SQL Server數(shù)據(jù)庫中信息的核心數(shù)據(jù)庫,將原始數(shù)據(jù)庫中的mdf文件覆蓋新建的數(shù)據(jù)庫中,以使新數(shù)據(jù)庫的數(shù)據(jù)和原數(shù)據(jù)庫的數(shù)據(jù)保持一致。
S103、啟動所述目標數(shù)據(jù)庫,對所述目標數(shù)據(jù)庫的物理和邏輯一致性進行檢查,若所述目標數(shù)據(jù)庫不存在一致性問題,則將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫。
具體的,啟動目標數(shù)據(jù)庫后,目標數(shù)據(jù)庫會自動創(chuàng)建新的log文件,具體包括:
dbcc rebuild_log('prestat','d:\Program Files\Microsoft SQL
Server\MSSQL\Data\prestat_log.ldf')
并通過dbcc語句對目標數(shù)據(jù)庫進行檢查:dbcc checkdb('prestat');若發(fā)現(xiàn)不一致性問題,則對目標數(shù)據(jù)庫進行修復(fù);若不存在一致性問題,則將目標數(shù)據(jù)庫替換原始數(shù)據(jù)庫進行工作。
在本方案中,啟動所述目標數(shù)據(jù)庫之后,將所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為置疑;檢查所述目標數(shù)據(jù)庫不存在一致性問題后,將所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為正常,具體包括:sp_dboption'prestat','dbo use only','false'。
需要說明的是,在本方案中將所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為置疑之后,允許對所述目標數(shù)據(jù)庫的系統(tǒng)目錄進行修改;將所述原始數(shù)據(jù)庫的狀態(tài)設(shè)置為正常之后,拒絕對所述目標數(shù)據(jù)庫的系統(tǒng)目錄進行修改;
具體的,將目標數(shù)據(jù)庫的狀態(tài)設(shè)置為置疑之后,需要允許對新庫Prestat的系統(tǒng)目錄進行修改,以便獲得修改權(quán)限,具體包括:
use master
go
sp_configure'allow updates',1
go
reconfigure with override
go
update sysdatabases set status=-32768where dbid=DB_ID('prestat')
本發(fā)明實施例公開了一種具體的日志優(yōu)化方法,相對于上一實施例,本實施例對技術(shù)方案作了進一步的說明和優(yōu)化。具體的:將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫之后,還包括:
將所述原始數(shù)據(jù)庫中的log文件進行壓縮存儲。
具體的,用新建的數(shù)據(jù)庫替換原始數(shù)據(jù)庫之后,可將原始數(shù)據(jù)庫進行壓縮處理,一方面可以減小原始數(shù)據(jù)庫占用磁盤空間,另一方便可以起到一個備份的作用。
并且在本實施例中,將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫之后,還包括:生成所述原始數(shù)據(jù)庫被所述目標數(shù)據(jù)庫替換的提示信息,并將所述提示信息發(fā)送至預(yù)定終端,以提示用戶原始數(shù)據(jù)庫已被新建的數(shù)據(jù)庫所替換。
下面對本發(fā)明實施例提供的日志優(yōu)化系統(tǒng)進行介紹,下文描述的日志優(yōu)化系統(tǒng)與上文描述的日志優(yōu)化系統(tǒng)可以相互參照。
參見圖2,本發(fā)明實施例提供的一種SQL Server數(shù)據(jù)庫的日志優(yōu)化系統(tǒng),包括:
創(chuàng)建模塊100,用于創(chuàng)建目標數(shù)據(jù)庫,停止運行原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫;所述原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫的類型均為SQL Server數(shù)據(jù)庫;
刪除模塊200,用于刪除所述目標數(shù)據(jù)庫的log文件;
替換模塊300,用于以所述原始數(shù)據(jù)庫的mdf文件替換所述目標數(shù)據(jù)庫的mdf文件;
檢查模塊400,用于啟動所述目標數(shù)據(jù)庫,對所述目標數(shù)據(jù)庫的物理和邏輯一致性進行檢查,若所述目標數(shù)據(jù)庫不存在一致性問題,則將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫。
基于上述技術(shù)方案,本方案還包括:
判斷模塊,用于判斷所述原始數(shù)據(jù)庫的log文件所占內(nèi)存值是否大于預(yù)定閾值;若是,則觸發(fā)所述創(chuàng)建模塊。
基于上述技術(shù)方案,本方案還包括:
生成模塊,用于在所述目標數(shù)據(jù)庫的狀態(tài)設(shè)置為正常之后,生成所述原始數(shù)據(jù)庫被所述目標數(shù)據(jù)庫替換的提示信息;
發(fā)送模塊,用于將所述提示信息發(fā)送至預(yù)定終端。
基于上述技術(shù)方案,本方案還包括:
壓縮模塊,用于將所述原始數(shù)據(jù)庫中的log文件進行壓縮存儲。
本發(fā)明實施例提供的一種SQL Server數(shù)據(jù)庫的日志優(yōu)化方法及系統(tǒng),包括:創(chuàng)建目標數(shù)據(jù)庫,停止運行原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫;所述原始數(shù)據(jù)庫和所述目標數(shù)據(jù)庫的類型均為SQL Server數(shù)據(jù)庫;刪除所述目標數(shù)據(jù)庫的log文件,并以所述原始數(shù)據(jù)庫的mdf文件替換所述目標數(shù)據(jù)庫的mdf文件;啟動所述目標數(shù)據(jù)庫,對所述目標數(shù)據(jù)庫的物理和邏輯一致性進行檢查,若所述目標數(shù)據(jù)庫不存在一致性問題,則將所述目標數(shù)據(jù)庫替換所述原始數(shù)據(jù)庫;
可見,在本實施例中,通過創(chuàng)建一個與原始數(shù)據(jù)庫類型一直的目標數(shù)據(jù)庫,并將原始數(shù)據(jù)庫中的mdf文件覆蓋目標數(shù)據(jù)庫,并在檢查成功后,通過目標數(shù)據(jù)庫代替原始數(shù)據(jù)庫,目標數(shù)據(jù)庫中的log文件相比原始數(shù)據(jù)庫中的log文件大大縮小,減少磁盤的無效使用,解決了企業(yè)對SQL SER VER數(shù)據(jù) 庫日志過大的問題,維護人員只要定期對SQL Server數(shù)據(jù)庫日志進行壓縮和縮小,能更好的維護SQL Server運行,更加合理有效使用磁盤空間。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。