快速應用SQL_Server事件探查器(SQLServer2008)課件_第1頁
快速應用SQL_Server事件探查器(SQLServer2008)課件_第2頁
快速應用SQL_Server事件探查器(SQLServer2008)課件_第3頁
快速應用SQL_Server事件探查器(SQLServer2008)課件_第4頁
快速應用SQL_Server事件探查器(SQLServer2008)課件_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、SQL ServerSQL Server事件探查器使用說明事件探查器使用說明用友醫(yī)療用友醫(yī)療PUB-HRPSPUB-HRPS開發(fā)部開發(fā)部2014年年 3月月整體概念SQL Server事件探查器(Profiler)可以幫助數(shù)據(jù)庫管理員及其他人員跟蹤SQL Server數(shù)據(jù)庫所執(zhí)行的特定事件,監(jiān)視數(shù)據(jù)庫的行為;并將這些有價值的信息保存到文件或表,以便以后用來分析解決數(shù)據(jù)庫出現(xiàn)的問題,對數(shù)據(jù)庫引擎性能進行優(yōu)化。 例如:對于HRP實施及開發(fā)人員可以達到以下目的: 1.追蹤功能操作在數(shù)據(jù)庫后臺所影響的物理表,視圖或存儲過程等。 2.當發(fā)生系統(tǒng)異常或報錯時,追蹤是發(fā)生在操作哪個數(shù)據(jù)庫對象。 3.追蹤影響

2、操作性能的數(shù)據(jù)庫后臺執(zhí)行記錄。SQLSERVER2008的事件探查器的位置1、首先從“開始”菜單指向“所有程序”,打開SQL Server Management Studio。從“工具”菜單選擇“事件探查器”。也可從菜單中直接打開,如下:SQLSERVER2008的事件探查器的位置1、選擇連接的服務器:SQL 事件探查器術(shù)語模板每次啟動事件探查器監(jiān)視時都會讓您選擇一個模板來進行跟蹤,默認是一個標準模板(SQLProfilerStandard)。里面有事先定義好的的事件和數(shù)據(jù)列,沒有篩選。我們可以創(chuàng)建一個模板以指定使用哪些事件、數(shù)據(jù)列和篩選。然后可以保存該模板,并用當前的模板設置啟動跟蹤。捕獲的

3、跟蹤數(shù)據(jù)基于模板中指定的選項。模板不執(zhí)行且必須用 .tdf 擴展名保存到文件。不同的模板,追蹤的內(nèi)容不同:其中所有項目,在鼠標移上去后,下面都有說明。模板模板常用模板說明:(后3種是用戶自定義的樣例模板)模板名稱說明空白自定義模板,顯示所有事件及監(jiān)控對象,由用戶根據(jù)需求自由定義。SP_Countssql server所有服務器進程監(jiān)控模板:服務器,數(shù)據(jù)庫,對象等。Standard(默認值)日常監(jiān)控:登錄,鏈接,存儲過程,SQL語句TSQL比默認模板縮小監(jiān)控范圍,只看啟動事件。TSQL_Duration只監(jiān)控:存儲過程,SQL語句完成時事件。TSQL_Grouped日常監(jiān)控:登錄,鏈接,存儲過程

4、與SQL語句開始執(zhí)行或調(diào)用事件。TSQL_Locks監(jiān)控:錯誤與警告,鎖,存儲過程,SQL語句。TSQL_Replay監(jiān)控:進程,登錄,鏈接,存儲過程,SQL語句。Tuning只監(jiān)控:存儲過程,SQL語句完成時事件。1(用戶)監(jiān)控:錯誤與警告3(用戶)只監(jiān)控:SQL語句完成時事件。select(用戶)監(jiān)控:錯誤與警告,存儲過程,SQL語句完成時事件。模板我們還可以保存模板以減少我們的重復勞動。保存模板涉及保存跟蹤定義,比如指定的數(shù)據(jù)列、事件和篩選。跟蹤定義包括事件類、數(shù)據(jù)列、事件準則(篩選)和所有其它用來創(chuàng)建跟蹤的屬性(捕獲的事件數(shù)據(jù)除外)。使用 SQL 事件探查器創(chuàng)建的模板保存在運行 SQL

5、 事件探查器的計算機上的文件中。 如果經(jīng)常監(jiān)視 SQL Server,則保存模板以便分析性能。模板每次捕獲相同的事件數(shù)據(jù),并使用相同的跟蹤定義監(jiān)視同一事件,因而無須在每次創(chuàng)建跟蹤時都定義事件類和數(shù)據(jù)列。另外,可以將模板提供給其他用戶,供其監(jiān)視特定的 SQL Server 事件。例如,支持提供商可提供給客戶一個模板??蛻羰褂眠@個模板捕獲所需的事件數(shù)據(jù),然后將這些數(shù)據(jù)發(fā)送給支持提供商供其分析。我們可以在“文件”菜單下“新建”下的“跟蹤模板”里建立一個新的模板,選擇好對應的事件類和數(shù)據(jù)列后將其保存,建議按應用場景取名以便是使用,如“存儲過程跟蹤模板”、“錯誤定位跟蹤模板”等。模板同樣我們也可以修改保

6、存在運行 SQL 事件探查器的本地計算機上的文件中的模板以及從文件導出的模板。如果沒有記住當初用于創(chuàng)建跟蹤的模板,或希望以后再次運行同一跟蹤,則可能需要從跟蹤文件導出模板。修改模板屬性(如事件類和數(shù)據(jù)列)的方法與當初設置該屬性的方法相同??梢蕴砑雍蛣h除事件類和數(shù)據(jù)列,也可以對篩選進行更改。修改模板后,以同一名稱保存它將重寫原來的模板。當處理現(xiàn)有跟蹤時,可以查看屬性,但不能修改。 警告:使用相同的名稱保存跟蹤文件將重寫原來的跟蹤文件,這將導致任何當初捕獲的事件或已刪除或篩選的數(shù)據(jù)列丟失SQL 事件探查器術(shù)語事 件事件是在 Microsoft SQL Server 引擎中生成的操作。例如:登錄連接

7、、失敗和斷開。Transact-SQL SELECT、INSERT、UPDATE 和 DELETE 語句。遠程過程調(diào)用 (RPC) 批處理狀態(tài)。存儲過程的開始或結(jié)束。SQL 批處理的開始或結(jié)束。存儲過程內(nèi)的語句的開始或結(jié)束。寫入 SQL Server 錯誤日志的錯誤。在數(shù)據(jù)庫對象上獲取或釋放的鎖。打開的游標。安全權(quán)限檢查。 由事件生成的所有數(shù)據(jù)顯示在單個行中的跟蹤內(nèi) 。該行包含詳細描述事件的數(shù)據(jù)列,稱為事件類。SQL 事件探查器監(jiān)控事件分類常用的事件分類:事件分類事件分類描描 述述游標游標操作產(chǎn)生的事件類集合。數(shù)據(jù)庫數(shù)據(jù)或日志文件自動增長或收縮時產(chǎn)生的事件類集合。錯誤和警告發(fā)生 SQL Ser

8、ver 錯誤或警告(例如,編譯存儲過程時發(fā)生的錯誤或 SQL Server 中的異常錯誤)時產(chǎn)生的事件類集合。鎖獲取、取消或釋放鎖等時產(chǎn)生的事件類集合。對象創(chuàng)建、打開、關(guān)閉、除去或刪除數(shù)據(jù)庫對象時產(chǎn)生的事件類集合。性能執(zhí)行 SQL 數(shù)據(jù)操作語言 (DML) 運算符時產(chǎn)生的事件類集合。掃描掃描表和索引時產(chǎn)生的事件類集合。安全審核用于審核服務器活動的事件類集合。會話由連接到 SQL Server 實例的客戶端和斷開與 SQL Server 實例的連接的客戶端產(chǎn)生的事件類集合。存儲過程執(zhí)行存儲過程所產(chǎn)生的事件類集合。事務執(zhí)行 Microsoft 分布式事務處理協(xié)調(diào)器 (MS DTC) 事務,或?qū)懭胧?/p>

9、務日志所產(chǎn)生的事件類集合。TSQL執(zhí)行從客戶端傳遞到 SQL Server 實例的 Transact-SQL 語句所產(chǎn)生的事件類集合。用戶可配置用戶可配置的事件類集合。TSQL 事件類TSQL 事件類是一個常用的事件,其對應的常用事件解釋如下:事件類事件類描描 述述ExecExecPrepared SQLPrepared SQL表示 ODBC、OLEDB 或 DB-Library 執(zhí)行準備好的 SQL語句的時間。Prepare SQLPrepare SQL表示 ODBC、OLEDB 或 DB-Library 將 SQL 語句準備好以便使用的時間。SQL:BatchComSQL:BatchCom

10、pletedpletedTransact-SQL 批處理已完成。SQL:BatchStaSQL:BatchStartingrtingTransact-SQL 批處理已啟動。SQL:StmtCompSQL:StmtCompletedletedTransact-SQL 語句已完成。SQL:StmtStarSQL:StmtStartingtingTransact-SQL 語句已啟動。UnprepareUnprepareSQLSQL表示 ODBC、OLEDB 或 DB-Library 撤消準備好的 SQL語句的時間。TSQL事件對應數(shù)據(jù)列:事件對應數(shù)據(jù)列:事件類事件類數(shù)據(jù)列數(shù)據(jù)列描述描述Exec Pr

11、epared SQLExec Prepared SQLEvent ClassEvent Class記錄的事件類型 = 72。HandleHandle準備好的 TSQL 語句的句柄。Prepare SQLPrepare SQLEvent ClassEvent Class記錄的事件類型 = 71。HandleHandle準備好的 TSQL 語句的句柄。SQL:BatchCompletedSQL:BatchCompletedEvent ClassEvent Class記錄的事件類型 = 12。DurationDuration事件的持續(xù)時間。End TimeEnd Time事件的結(jié)束時間。ReadsR

12、eads由批處理導致的頁讀取 I/O 數(shù)。WritesWrites由批處理導致的頁寫入 I/O 數(shù)。CPUCPU批處理過程中使用的 CPU。Text DataText Data批處理的文本。SQL:BatchStartingSQL:BatchStartingEvent ClassEvent Class記錄的事件類型 = 13。Text DataText Data批處理的文本。SQL:StmtCompletedSQL:StmtCompletedEvent ClassEvent Class記錄的事件類型 = 41。DurationDuration事件的持續(xù)時間。End TimeEnd Time事件

13、的結(jié)束時間。ReadsReads由 SQL 語句發(fā)出的頁讀取數(shù)。WritesWrites由 SQL 語句發(fā)出的頁寫入數(shù)。CPUCPU由 SQL 語句使用的 CPU。Integer DataInteger Data由 SQL 語句返回的行數(shù)。Object IDObject ID如果曾在存儲過程中運行 SQL 語句,則是父存儲過程的對象 ID。Nest LevelNest Level如果曾在存儲過程中運行 SQL 語句,則是存儲過程的嵌套級。Text DataText Data將要執(zhí)行的語句文本。SQL:StmtStartingSQL:StmtStartingEvent ClassEvent Cl

14、ass記錄的事件類型 = 40。Object IDObject ID如果曾在存儲過程中運行 SQL 語句,則是父存儲過程的對象 ID。Nest LevelNest Level如果曾在存儲過程中運行 SQL 語句,則是存儲過程的嵌套級。Text DataText Data將要執(zhí)行的語句文本。Unprepare SQLUnprepare SQLEvent ClassEvent Class記錄的事件類型 = 73。HandleHandle準備好的 TSQL 語句的句柄。存儲過程事件類存儲過程事件類是執(zhí)行存儲過程所產(chǎn)生的事件的集合,也是一個常用的事件類,其對應的常用事件解釋如下:存儲過程事件類SP:S

15、tarting-表明存儲過程已被啟動的時間,其監(jiān)視到的結(jié)果是整個存儲過程的調(diào)用,結(jié)果形式如:exec Sa_MoveSaleDetail Sa_TempSaleDetail_GCCXL0, , , , , , , , 其中Sa_MoveSaleDetail 為存儲過程名稱;exec為SQL的一個命令,可以理解為執(zhí)行; Sa_TempSaleDetail_GCCXL0, , , , , , , , 傳遞給該存儲過程的參數(shù);SP:Completed 、RPC:Starting 、RPC:Completed 返回的結(jié)果都與此類似。存儲過程事件類SP:StmtStarting -表明正在啟動存儲過程內(nèi)

16、的某語句的時間,其監(jiān)視到的結(jié)果是一個存儲過程內(nèi)部的一條語句的執(zhí)行,結(jié)果形式如:- Sa_MoveSaleDetailif ltrim(rtrim(chrwhere1 ) = newReport_ParameterFromTempTable 其中:- Sa_MoveSaleDetail指明該語句所屬的存儲過程;if ltrim(rtrim(chrwhere1 ) = newReport_ParameterFromTempTable 指的是執(zhí)行的具體的SQL語句;SP:StmtCompleted返回的結(jié)果與此類似。存儲過程事件類以上兩部分的事件您可以理解為整體和局部的概念,也就是說一個是跟蹤整體的

17、結(jié)果,一個是跟蹤明細的結(jié)果。如果是希望了解程序的流程,可以跟蹤整體,知道其使用了那些存儲過程即可。然后再具體查看該存儲過程,了解其內(nèi)部處理流程;此處插入說明一點,要查看某個存儲過程的具體內(nèi)容,可以直接到企業(yè)管理器里找到該存儲過程雙擊打開;也可以在查詢分析器里利用系統(tǒng)存儲過程SP_HelpText來查看,如前面說到的存儲過程Sa_MoveSaleDetail,我們可以在查詢分析器對應的數(shù)據(jù)庫下執(zhí)行如下命令:SP_HelpText Sa_MoveSaleDetail來查看其明細內(nèi)容。但是要注意的一點是:必須該存儲過程沒有加密,否則無法查看。如果是跟蹤錯誤,建議選擇明細的跟蹤,這樣可以具體的定位到某

18、個存儲過程里的某條語句出的錯。錯誤和警告事件類 錯誤和警告是在發(fā)生SQL Server錯誤或警告時產(chǎn)生的事件類集合(例如,一個在編譯存儲過程中產(chǎn)生的錯誤,或者一個SQL Server中的異常錯誤),其對應的常用事件解釋如下:錯誤和警告事件類該事件類里面又以Exception 事件類為主要,基本上只要是SQL里面發(fā)生的錯誤其都能跟蹤得到,這為我們快速定位錯誤提供了簡便而準確的方法,我們來看下面的錯誤展示。首先我們在運行一個跟蹤,挑選出要跟蹤的事件類為SQL:BatchStarting;SQL:BatchCompleted;Exception;數(shù)據(jù)列為默認的,我們再在查詢分析器里執(zhí)行一條SQL語句

19、:Updaterdrecord setid=11報錯如下:服務器: 消息 2601,級別 14,狀態(tài) 3,行 1不能在具有唯一索引 aaRdRecord_PK 的對象 RdRecord 中插入重復鍵的行。語句已終止。錯誤和警告事件類停止跟蹤,看看是否正確跟蹤出錯誤:錯誤和警告事件類 我們看到,沒有任何問題,錯誤得以跟蹤到,注意其上我以藍色表注的語句,其TEXTDATA的內(nèi)容都是一致的,只是對應的事件類分別為SQL:BatchStarting和SQL:BatchCompleted,正好把EXCEPTION事件類對應的事件給包在中間,那么我們就可以知道,引起錯誤的語句就是Update rdreco

20、rd setid=11了。怎么樣,定位錯誤就是這么簡單!我們把圖再放在這里給大家對比一下看看:SQL 事件探查器術(shù)語篩選 當創(chuàng)建跟蹤或模板時,可以定義篩選由事件收集的數(shù)據(jù)的準則。 如果沒有設置篩選,跟蹤輸出中將返回選定事件類的所有事件。例如,可以將跟蹤中的 Microsoft Windows 2000 用戶名限制為特定用戶,以將輸出數(shù)據(jù)如果跟蹤變得太大,可以基于想要的信息進行篩選,以便只收集事件數(shù)據(jù)的減少到感興趣的那些用戶。也可以只跟蹤對特定數(shù)據(jù)庫的操作的信息,這樣在多帳套的服務器上就可以更快的收集到我們感興趣的信息。SQL 事件探查器術(shù)語跟蹤跟蹤基于選定的事件、數(shù)據(jù)列和篩選捕獲數(shù)據(jù)。例如,可

21、創(chuàng)建模板監(jiān)視異常錯誤。為此,應選擇跟蹤 Exception 事件類以及Error、State 和 Severity 數(shù)據(jù)列,這些都是為了使跟蹤結(jié)果提供有意義的數(shù)據(jù)而需收集的。保存模板后,便可將其作為跟蹤運行,并且可收集關(guān)于服務器中發(fā)生的任何 Exception 事件的數(shù)據(jù)。可保存此跟蹤數(shù)據(jù),然后稍后重播或立即用于分析。跟蹤詳解啟動、暫停和停止跟蹤使用 SQL 事件探查器時,啟動跟蹤將打開一個新的跟蹤窗口(如果沒有窗口打開),并立即捕獲數(shù)據(jù)。當使用 SQL Server 系統(tǒng)存儲過程時,每次啟用 SQL Server 實例時可手工或自動啟動跟蹤。一啟跟蹤,就會立即捕獲數(shù)據(jù)。啟動跟蹤后,只能修改跟

22、蹤的名稱。暫停跟蹤可防止捕獲更多的事件數(shù)據(jù),直到重新啟動。重新啟動跟蹤將繼續(xù)執(zhí)行跟蹤操作。先前捕獲的所有數(shù)據(jù)都不丟失。重新啟動跟蹤時,從啟動的那一點起繼續(xù)捕獲數(shù)據(jù)。當暫停跟蹤時,可以更改名稱、事件、列和篩選。但是不能更改要將跟蹤發(fā)送到的目的地或服務器連接。停止跟蹤將停止捕獲數(shù)據(jù)。一旦停止了跟蹤,除非已將數(shù)據(jù)捕獲到了跟蹤文件或跟蹤表中,否則重新啟動該跟蹤將丟失以前捕獲的數(shù)據(jù)。當停止跟蹤時,將保留以前選擇的所有跟蹤屬性。當停止跟蹤時,可以更改名稱、事件、列和篩選。說明:我們可以將跟蹤的結(jié)果保存到文件里或者保存到數(shù)據(jù)庫的表里。需要說明一點的是,如果保存在文件里,那么您在使用查詢功能時需要注意一點:大

23、小寫敏感,也就是說查詢區(qū)分大小寫,如RDRECORD與rdrecord是不同的內(nèi)容。而如果保存在表里的話則沒有這種缺點,但是如果您希望保存在表里,最好選擇其他服務器上的數(shù)據(jù)庫來保存,特別是一些對數(shù)據(jù)庫操作頻繁的動作,如果保存在同一服務器上,也最好不要將結(jié)果表建立在目標數(shù)據(jù)庫里,否則將會嚴重影響效率。跟蹤詳解查看和分析跟蹤使用 SQL 事件探查器可以查看跟蹤內(nèi)捕獲的事件數(shù)據(jù)。SQL 事件探查器基于定義的跟蹤屬性顯示數(shù)據(jù)。分析 Microsoft SQL Server數(shù)據(jù)的一個方法是將數(shù)據(jù)復制到另一個程序,如 SQL 查詢分析器。使用 SQL 事件探查器可以打開保存的跟蹤文件(后綴為.trc的跟蹤

24、文件) 。 可以用自定義的字體、字體大小以便有助于分析跟蹤。跟蹤詳解重播跟蹤在創(chuàng)建或編輯跟蹤時,可以保存跟蹤供以后重播。SQL 事件探查器的特色是有一個多線程播放引擎,它能模擬用戶連接和 SQL Server 身份驗證,使用戶得以重新產(chǎn)生跟蹤內(nèi)捕獲的活動。因此,重播對解決應用程序或進程的問題很有幫助。識別出問題并進行了糾正后,對糾正后的應用程序或進程運行找到了潛在問題的那個跟蹤,然后重播原來的跟蹤并比較結(jié)果。跟蹤重播支持使用重播到斷點和游標的方式進行調(diào)試,這在分析長腳本時尤為有用。跟蹤詳解單步跟蹤SQL 事件探查器使您得以不必從頭至尾全部重播跟蹤內(nèi)的所有事件,而按下面的方式重播跟蹤: 一次重播

25、一個事件 通過一次一個事件地重播跟蹤,可以檢查每個事件發(fā)生后的效果。使用單步跟蹤繼續(xù)重播跟蹤時,重播下一個事件后跟蹤再次暫停。重播到斷點 通過在跟蹤內(nèi)指定一個或多個斷點,可以按重播選項指定的設置,重播帶斷點標記的事件之前的所有事件,無須用戶干預,播完后跟蹤重播將暫停。跟蹤重播可以繼續(xù)按一次一個事件、到下一個斷點(若有)、到游標或到跟蹤的結(jié)束處等方式重播跟蹤。如果在重播跟蹤時不想檢查斷點前的每個事件,則重播跟蹤到斷點的方式很有用。例如,已經(jīng)調(diào)試了代碼并確定了斷點前的所有事件都按預期執(zhí)行,不需要進一步檢查這些事件。重播到游標 通過重播跟蹤到游標(跟蹤內(nèi)的突出顯示事件),可重播突出顯示事件前的所有事

26、件,無須用戶干預。但是,如果在跟蹤內(nèi)標記了一個斷點,而這個斷點位于游標和跟蹤內(nèi)下一個執(zhí)行點之間,重播將在這個斷點處停止,而不會繼續(xù)重播到游標。刪除跟蹤內(nèi)的所有斷點以重播跟蹤到游標。與斷點一樣,如果在重播跟蹤時不想檢查游標前的每個事件,重播跟蹤到游標很有用。單步跟蹤有助于調(diào)試跟蹤內(nèi)捕獲的事件。例如,可以創(chuàng)建一個跟蹤,監(jiān)視所有提交的批處理的執(zhí)行。通過一次一個事件地(單步)重播跟蹤內(nèi)的事件,可以確定每個批處理發(fā)生時的效果,使您得以調(diào)試代碼。這比在批處理間放置大量的調(diào)試代碼有效得多。調(diào)試代碼通常會產(chǎn)生更多需要從生成的實際結(jié)果中分離出來的輸出,完成調(diào)試后必須正確地刪除這些輸出。SQL 事件探查器性能考慮下面是一些有助于更有效地使用 SQL 事件探查器的提示和技巧。運行的跟蹤過多如果 Microsoft SQL Server 實例運行得過慢,則表明可能 SQL 事件探查器運行的跟蹤過多或正在運行復雜的跟蹤。停止任何運行的跟蹤以觀察性能是否有所提高。如果停止跟蹤可使性能提高,則請仔細檢查跟蹤以確保只跟蹤必要的信息。確保沒有同時運行過多的復雜跟蹤。管理大跟蹤文件大跟蹤文件會占用大量磁盤空間,在網(wǎng)絡上發(fā)送時會很慢,也很昂貴。通過刪除不必要的事件類型和/或數(shù)據(jù)列,并應用篩選將跟蹤限制為特定的跟蹤事件準則(如 ClientProcessID 或 SPID,或 App

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論