2013-12-08 70 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