發表文章

目前顯示的是 3月, 2010的文章

如何使用SQL Profiler 找到語法錯誤

圖片
  SQL Profiler 我們在執行SQL 語法時, 常發生SQL Server 端的錯誤, 但無法直接由Client 端的訊息看出來,此時我們可透過SQL Profiler 來找到Server 執行的錯誤, 只是Server 端的事件那麼多該如何找到錯誤呢? 一個很重要的觀念, SQL Server 不論執行的結果如何, 正確或錯誤都會產生Complete的事件, 如 StoreProcedure 的 SP:Completed/StmtCompleted   一般SQL 的SQL:StmtCompleted / BatchCompleted. 奇怪了, 都錯了怎麼還有BatchCompleted 呢? 別緊張在Error 欄也有寫執行結果(1-Error) ,因此我們可以針對執行結果為1-Error 的部份, 來看它的錯誤原因,只要設定Exception 及User Error Message , 並針對所需的指令類別(StoreProcedure或一般SQL)所需的Completed 事件, 就可以找到錯誤的指令.   實際應用的案例 以下是一個我們在Client 端程式所發生的錯誤, 可是單由Client端的訊息看不出來錯在那裡, 執行資料庫Schema 更新失敗(Schema Ver.18 update failed) 接下來要找到失敗的原因. 1. 開啟 SQL Profiler. 開始-->程式集—>Mircosoft SQL Server 2005->效能工具->SQL Server Profiler. 2.新增追蹤 3.連結資料庫 4.設定所需的事件 預設項目除了 RPC:Completed , SP:StmtCompleted, SQL BatchCompleted 其餘均可取消.   5.勾選 顯示所有事件及顯示所有資料行. 6.選擇必要的事件    對於找出一般SQL 指令的錯誤而言, 只需要設定三個值, 其餘可取消.    設定Errors and Warnings 之 Exception 與User Error M...

ProcessRunner.OnIdle, System.InvalidOperationException

圖片
今天突然發現AgilePoint Server 的Log 長大到20M,檢查後發現之前就曾發生過, 趕快檢查一下內容, 發現都是 2010-01-25 16:30:16.538 >>> ProcessRunner.OnIdle, System.InvalidOperationException: 指定的分類的計數器配置無效,以下型別的計數器: AverageCount64、AverageTimer32、CounterMultiTimer、CounterMultiTimerInverse、CounterMultiTimer100Ns、CounterMultiTimer100NsInverse、RawFraction 或 SampleFraction 後面必須緊接著下列任何基礎計數器型別: AverageBase、CounterMultiBase、RawBase 或 SampleBase。    於 System.Diagnostics.CategorySample.GetCounterDefinitionSample(String counter)    於 System.Diagnostics.PerformanceCounter.NextSample()    於 System.Diagnostics.PerformanceCounter.NextValue()    於 bc.a(Object A_0, EventArgs A_1)    於 ao.e() 這個錯誤我還是第一次看到, 我也是第一次知道AgilePoint 有讀效能計數器. 後來追查幾次log 記錄時間, 發現log記錄這個錯誤前, 事件件檢視器的應用程式上都有警告的訊息. 檢查內容發現是iasperf.dll 的問題, 看來是微軟的作業系統的問題.     有看到一篇文章談到如何解決, 不過只談到如何忽略這個訊息, 但沒找到patch, 且不知忽略後, 對AgilePoint Server 的exception Log 會有什麼影響, 故先記錄下來., 下次再出現時再來測試. http:...