在使用NHibernate的时候,使用NHibernate Profiler分析与数据库的交互操作是非常不错的选择,而且NHibernate Profiler针对于NHibernate的分析是非常强大的。但NHibernate Profiler毕竟有个license问题,如果我们只是想看看NHibernate与SQL Server交互时发出了哪些SQL语句,那么使用SQL Server自带的SQL Profiler就可以。一下内容转载自博客园“Nate 小窝”。
简介
SQL Server Profiler的中文意思是SQL Server事件探查,其实这个SQL Server Profiler就是一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接。
SQL Server Profiler使用方法
我们单击开始--程序--Microsoft SQL Server 2005--性能工具--SQL Server Profiler
如下图
然后会出现如下界面
我们单击文件---【新建跟踪(N)...】,这是一个多窗口多任何的工具,我们可以同时新建不同的跟踪窗口,也可以是不同的数据库
接着看
在这里我们输入 我们的跟踪的数据库的服务器名称,用户名和密码等信息。单击连接进入下一个界面
上图中左面的可以进行一个基本设置,使用的模板选择,和文件的保存选择等。我们一般使用默认的就OK了,不用动上面的东西,右面的图是事件选择,也就是说我们要跟踪的事件有那个,在这里可以一一的选择,基本上Sql上有的事件都有,包括你用SQL Server Management Studio操作数据库的过程都可以跟踪的到。具体的事件和说明大家可以自己看一下。
只要单击显示所有事件就可以进行全部事件的选择了。
我们还可以对统计的字段进行筛选,单击任意一个列标题可以查看列的说明如下图
我们从上图上依次说明 为:
TextDate 依赖于跟踪中捕获的事件类的文本值;
ApplicationName 创建 SQL Server 连接的客户端应用程序的名称。此列由该应用程序传递的值填充,而不是由所显示的程序名填充的;
NTusername Windows 用户名。
LoginName 用户的登录名(SQL Server 安全登录或 Windows 登录凭据,格式为“域\用户名”)
CPU 事件使用的 CPU 时间(毫秒)。
Reads 由服务器代表事件读取逻辑磁盘的次数。
Writes 由服务器代表事件写入物理磁盘的次数。
Duration 事件占用的时间。尽管服务器以微秒计算持续时间,SQL Server Profiler 却能够以毫秒为单位显示该值,具体情况取决于“工具”>“选项”对话框中的设置
ClientProcessID 调用 SQL Server 的应用程序的进程 ID。
SPID SQL Server 为客户端的相关进程分配的服务器进程 ID。
StratTime 事件(如果可用)的启动时间。
EndTime 事件结束的时间。对指示事件开始的事件类(例如 SQL:BatchStarting 或 SP:Starting)将不填充此列。
BinaryData 依赖于跟踪中捕获的事件类的二进制值。
然后我们单击运行就可以,当然如果有兴趣的话你也可以对列进行重新排列和筛选,只要单击下面相应的按钮根据提示操作就要可以了,我们这里就安默认的进行
通过上面的图我们就可以清楚的跟踪到每一步操作是过程了。现在无论是你使用SQL Server Managerment Studio或者是使用VS NHibernate代码来操作数据库,相应的过程包括SQL语句,时间等都会被SQL Profiler监听到并且显示出来。