4.6 通過日誌查看伺服器的運行情況
SQL
Server 2005可以將某些系統事件和使用者自訂的事件記錄到SQL Server錯誤記錄檔和Windows應用程式記錄檔中。這兩種日誌都會自動標上時間。
4.6.1 在【事件檢視器】中查看伺服器的運行情況
SQL
Server
2005伺服器的啟動、關閉和暫停動作,都會產生一個事件記錄,這個記錄將會記在Windows的【事件檢視器】中。如果在4.5.4節中為SQL
Server
2005伺服器設定的安全性裡,設定了登入審核的話,那麼只要符合登入審核條件的事件記錄,也會記在Windows的【事件檢視器】中,下面介紹一下查看
SQL
Server 2005事件記錄的辦法。
(1)在電腦的【開始】菜單à【管理工具】à【事件檢視器】,有些讀者的菜單可能和筆者的不一樣,沒關係,只要是找到【事件檢視器】程式就行了。
(2)在4.49所示【事件檢視器】對話方塊,選擇【事件檢視器(本地)】à【應用程式】選項,在右邊的列表框裡可以看到所有的事件記錄列表。
圖4.49 【事件檢視器】對話方塊
(3)雙擊其中一個事件,將彈出4.50所示的【事件屬性】對話方塊,在這裡可以看到事件的詳細內容。本例中是審核成功資訊。通過這一項可以看出是否有駭客成功入侵。
圖4.50 【事件屬性】對話方塊
(4)在【事件檢視器】裡有可能記錄了各種不同應用程式的事件記
錄,如果只想查看和SQL
Server有關的事件記錄的話,可以右擊【應用程式】,在彈出的捷徑功能表裡選擇【查看】à【篩選】。4.51所示的【應用程式屬性】對話方塊。在這裡
可以篩選事件類型、事件來源、類別、事件時間等。具體篩選例子就不贅述了。
圖4.51 【應用程式屬性】對話方塊
注意:在事件檢視器裡的【安全性】、【系統】裡,也會記載著於SQL Server 2005相關的事件記錄,不要忘記查看它們。在Windows應用程式記錄檔裡,不僅僅記錄資料庫啟動停止和身份審核資訊,還會完整地記錄Windows作業系統上發生的事件,以及SQL
Server和SQL Server代理中的事件。
4.6.2 2005新增功能:通過日誌查看器查看SQL Server日誌
在SQL Server Management Studio中查看SQL Server日誌的方法如下:
(1)啟動【SQL Server Management Studio】並串連到SQL Server伺服器上。
(2)在【物件總管】中,屏開【執行個體名】à【管理】à【SQL Server日誌】,4.52所示,可以看到SQL Server的日誌存檔。
圖4.52 查看SQL Server日誌
(3)雙擊某一個日誌存檔,4.53所示對話方塊【記錄檔查看器】視窗,可以查看日誌的具體內容。
圖4.53 【記錄檔查看器】視窗
4.6.3 在LOG檔案夾中查看SQL
Server錯誤記錄檔
SQL
Server 2005還會將SQL Server的錯誤記錄檔存在系統硬碟的“D:/Program
Files/Microsoft SQL Server/MSSQL.X/MSSQL/LOG”目錄下,檔案名稱“ERRORLOG”和“ERRORLOG.X ”,其中“X”是數字。用記事本可以開啟來查看。
查看SQL SERVER的交易記錄:
在SQL SERVER 7.0和2000中,可以用下面的命令查看:
DBCC log ( {dbid|dbname}, [, type={0|1|2|3|4}] )
參數:
Dbid or dbname - 任一資料庫的ID或名字
type - 輸出結果的類型:
0 - 最少資訊(operation, context, transaction id)
1 - 更多資訊(plus flags, tags, row length)
2 - 非常詳細的資訊(plus object name, index name,page id, slot id)
3 - 每種操作的全部資訊
4 - 每種操作的全部資訊加上該事務的16進位資訊
預設 type = 0
要查看ZHOZDB資料庫的交易記錄可以用以下命令:
DBCC log (zhozdb)
SQL Server壓縮日誌及資料庫檔案大小
1、清空日誌
DUMP TRANSACTION ZHOZDB WITH NO_LOG
2、截斷交易記錄
BACKUP LOG ZHOZDB WITH NO_LOG
3、收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減小)
企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案
--選擇記錄檔--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。
--選擇資料檔案--在收縮方式裡選擇收縮至XXM,這裡會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。
也可以用SQL語句來完成:
--收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
--收縮指定資料檔案,1是檔案號,可以通過這個語句查詢到:
select * from sysfiles DBCC SHRINKFILE(1)
4、為了最大化的縮小記錄檔(如果是sql 7.0,這步只能在查詢分析器中進行)
a.分離資料庫:
企業管理器--伺服器--資料庫--右鍵--分離資料庫
b.在我的電腦中刪除LOG檔案
c.附加資料庫:
企業管理器--伺服器--資料庫--右鍵--附加資料庫
此法將產生新的LOG,大小隻有500多K
或用代碼:
下面的樣本分離 pubs,然後將 pubs 中的一個檔案附加到當前伺服器。
a.分離
EXEC sp_detach_db @dbname = 'pubs'
b.刪除記錄檔
c.再附加:
EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:/Program Files/Microsoft SQL Server/MSSQL/Data/pubs.mdf'
5、為了以後能自動收縮,做如下設定:
企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇“自動收縮”
--SQL語句設定方式:
EXEC sp_dboption 'ZHOZDB', 'autoshrink', 'TRUE'
6、如果想以後不讓它日誌增長得太大。
企業管理器--伺服器--右鍵資料庫--屬性--交易記錄
--將檔案增長限制為xM(x是你允許的最大資料檔案大小)
--SQL語句的設定方式:
alter database ZHOZDB modify file(name=邏輯檔案名稱,maxsize=20)
很多朋友在事件檢視器看到出現了問題,但大多不知道如何根據這些資訊去解決實際碰到的問題,以下是我根據網上的討論和實踐,總結出來的一些經驗供大家分享,版主覺得有協助的話,希望加入精華,不好的話,請勿使用雞蛋或者磚頭等物體,謝謝!
事件檢視器中看到不斷出現下面的錯誤記錄檔。
事件類型:錯誤
事件來源:TermServDevices
事件種類:無
事件 ID:1106
日期:2004-7-8
事件:14:06:37
使用者:N/A
電腦:UBO-WS
描述:
無法安裝印表機。
資料:
0000: ba 06 00 00 32 04 00 00 o...2...
=================================
針對此問題,我們得到事件來源和事件ID分別是 TermServDevices 和 1106
訪問http://eventid.net/search.asp(這是個查詢事件裡面源和ID資訊的很好的網站,免費收費服務都有,英文好的朋友可以直接閱讀)將上面的事件來源和事件ID填入搜尋索引鍵裡面搜尋,得到以下關於此錯誤的資訊:
==============
Event ID: 1106 //錯誤事件ID
Source TermServDevices //錯誤事件來源
Type Error //錯誤類型
Description The printer could not be installed. //簡單描述(無法安裝印表機)
Details Comments and links for event id 1106 from source TermServDevices //這裡有詳細連結到具體的討論中,點擊這裡
============================
接下來點擊上文Detail的連結,得到詳細的討論,Comments顯示則是一些國外IT朋友對此問題的討論,很有參考價值,然後Links裡面有到微
軟知識庫的相關問題連結:Q239088 , Q294429,由此我們得到兩個知識庫ID號 239088 和 294429
微軟知識庫的連結方式為:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;+知識庫ID號
最後,我們使用以下連結得到了最後的答案,並排錯。
Windows 2000 終端服務伺服器記錄事件 1111、1105 和 1106
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;239088
Windows Server 終端服務中的印表機重新導向體繫結構
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;294429
在SQL企業管理器中,管理-SQL Server日誌,開啟即可。
在SQL 2000下,可用系統Function來查到。
SELECT * From ::fn_dblog(Default,Default)