2013-12-08 68 views
0

我有一個客戶端應用程序,它通過本地主機上的按鈕從SQL Server向我顯示用戶信息,產品和價格等信息。SQL Server:執行哪些查詢?

例如,當我點擊顯示費用時,它獲取一些信息。

我想知道哪個按鈕執行哪個查詢?

是否有任何方式監視應用程序執行的SQL語句?

我試圖

SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] 
FROM sys.dm_exec_query_stats AS deqs 
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest 
ORDER BY deqs.last_execution_time DESC 

但是這個代碼不顯示來自應用程序的SQL語句。

謝謝。

+3

你有沒有看過Sql Server Profiler - http://www.techrepublic.com/article/step-by-step-an-introduction-to-sql-server-profiler/ –

+2

絕對可以檢查出來** SQL Server Profiler * * - *** ***這個工作的工具 –

+2

當然,如果你把這個應用當作黑匣子來對待,那麼你就沒有辦法確定它已經捕獲了10個(或100個,1000個等)查詢下次運行應用程序時,它將不會運行完全不同的查詢。唯一可以肯定的方式是檢查源代碼(並理解它) –

回答

1

一般來說,當你使用SQL Server Profiler,您在運行跟蹤時,得到的結果爲其它數據庫以及 - 如果在同一個數據庫服務器託管的其他數據庫被其他應用程序使用。你想跟蹤你的數據庫中的東西,其中你的應用程序正在使用。它可能不適合你如果你的數據庫服務器只有一個數據庫 - 只要提到如果是這樣的話。我發現這種方法非常有用。

我會設置一個模板,將數據庫設置爲過濾器並使用該模板創建跟蹤。

這是你如何創建模板 - http://technet.microsoft.com/en-us/library/ms175070.aspx

這是你如何過濾看到只有對數據庫執行的查詢: -

在跟蹤模板屬性>事件選擇選項卡>選擇顯示 所有列。現在在列過濾器下,您應該看到數據庫 的名稱。輸入Like部分的數據庫名稱,您應該只看到該數據庫的 跟蹤。

就可以看到應用程序執行的SQL語句。我有事先分析器。看下面的例子。

用戶輸入名稱,如下面的windows窗體 「ashish1」: -

enter image description here

它獲取當用戶點擊該按鈕執行的代碼: -

enter image description here

如果您讓分析器運行,您可以看到應用程序發送的Sql語句: - enter image description here

+0

感謝您的幫助。你說得很好。但我不能這樣做。它返回相同的輸出,並且不返回由客戶端應用程序執行的sql語句。 – cantas

+0

@ user2922744 - 不是。你可以看到應用程序執行的Sql語句。請參閱上面我更新的答案。另外 - 請upvote如果這有助於你。 :-) –

+0

LoginName :)我在喜歡的部分設置了登錄名。它的作品 – cantas