在SQL Server服务器的运行过程中,系统管理员经常监视服务器、用户和数据库的活动情况。在SQL Server 2000中,有以下监视工具:
n SQL Server performance Monitor:SQL Server性能监视器。可以通过图形界面、警报和报表等方式监视SQL Server的运行状况。
n SQL Server Profiler:主要用来跟踪SQL Server数据库系统引擎事件。
n SQL Server Enterprise Manager:可以显示服务器的当前活动情况。
n sp_monitor:使用存储过程sp_monitor可以显示上次执行该存储过程之后SQL Server系统占用CPU的时间、I/O时间、收发的网络数据包数量等信息。
另外,还可以使用系统存储过程sp_who、sp_lock监视系统性能。
本章主要介绍如何使用SQL Server Performance Monitor、SQL Server Enterprise Manager和系统存储过程sp_monitor监视服务器性能。
使用性能监视器(Performance Monitor)可以检测本地和网络中其他计算机的不同对象的信息,可以监视数据库、缓存、日志、内存、线程等信息。
@ SQL Server性能监视器和SQL Server之间的连接方式为Windows NT认证方式,所以在运行SQL Server性能监视器之前,首先要赋予账户对SQL Server服务器的访问许可。
使用性能监视器可以用三种方式监视计算机的活动:
n 图形监视方式
n 警报监视方式
n 报表监视方式
使用图形监视方式可以直观地监视计算机的活动,尤其是计数器数值的变化情况,操作步骤如下:
(1)在SQL Server程序组中单击Performance Monitor,启动性能监视器图形界面,如图17-1所示。默认情况下,显示如下对象和计数器:
n Buffer Manager对象中的Buffer Cache Hit Ratio计数器。
n General Statistics对象中的User Connections计数器。
n Memory Manager对象中的Total Server Memory(KB)计数器。
n SQL Statistics对象中的SQL Compliations/sec计数器。
n Buffer Manager对象中的Page Reads/sec计数器。
n Buffer Manager对象中的Page Writes/sec计数器。
图17-1 性能监视器图形监视方式
(2)如果要监视网络中的其他Windows NT或者SQL Server计数器,单击工具栏上的按钮,打开如图17-2所示的“添加计数器”对话框,在该对话框中添加其他监视对象和计数器。
图17-2 添加计数器
(3)选择“使用本地计算机计数器”或者“从计算机选择计数器”选项,如果选择后者,在下拉式列表中选择计算机。
(4)在“性能对象”下拉式列表中选择要监视的对象,在这里选择SQL Server对象中的Memory Manager对象。
(5)如果选择“所有计数器”选项,可以监视所有计数器,选择“从列表选择计数器”选项,并在列表中选择,可以监视特定的计数器。
(6)设置完成后,单击“添加”按钮,将选定的计数器添加到性能监视器的监视窗口中,用同样的方法添加其它计数器,添加完毕后,单击“关闭”按钮。
添加完成后,性能监视器以不同的颜色显示计数器的当前数值,并在窗口的下面列出了所有被监视的对象和计数器名称以及它们所对应的显示颜色。
使用警报监视方式可以实现对特定对象的自动监视,当被监视的计数器达到一定数值后,性能监视器就会产生警报,启动相应的程序。警报监视的设置步骤如下:
(1)从Microsoft SQL Server程序组中单击Performance Monitor,启动性能监视器,展开Performance Logs and Alerls,用鼠标右键单击“警报”,在弹出的快捷菜单中选择“新的警报设置”,打开如图17-3所示的对话框。
图17-3 新建警报设置
(2)在该对话框中键入新建警报的名称,单击“确定”按钮,打开如图17-4所示的对话框。在该对话框中有三个选项卡:常规、操作和计划。
图17-4 “常规”选项卡
(3)在“常规”选项卡中的“注释”文本框中键入该警报的注释信息,单击“添加”按钮,打开如图17-2所示的“添加计数器”对话框,按照前面所讲的方法添加计数器,单击“关闭”按钮,关闭“添加计数器”对话框。在这里,添加监视SQL Server:Memory Manager和Buffer Manager。
(4)添加完计数器后,在“常规”选项卡中的“将触发警报”区域设置警报触发的条件并设置数据的采样间隔,设置完成后如图17-5所示。
图17-5 设置后的“常规”选项卡
(5)选择“操作”选项卡,如图17-6所示,在该选项卡中设置警报触发的时间。
图17-6 “操作”选项卡
(6)选择“计划”选项卡,如图17-7所示,在该选项卡中设置开始和停止扫描的时间。
图17-7 “计划”选项卡
(7)设置完成后,单击“确定”按钮完成警报的创建。
使用报表监视方式可以准确地读取每个计数器的数值,设置报表监视方式的步骤如下:
(1)从Microsoft SQL Server程序组中单击Performance Monitor,启动性能监视器,单击工具栏上的按钮,打开如图17-8所示的窗口。
图17-8 性能监视器报表监视方式
(2)单击工具栏上的按钮,打开如图17-9所示的“添加计数器”对话框,在该对话框中,选择监视SQL Server:Cache Manager、Locks和Memory Manager对象中的计数器。
图17-9 添加报表项
(3)添加完成后,单击“关闭”按钮,关闭“添加计数器”对话框。
这样,性能监视器就以报表的方式显示计数器信息。
使用SQL Server Enterprise Manager除了可以监视SQL Server活动外,还可以监视每个用户的活动。通过使用Current Activity Monitor可以查看用户连接、锁、进程个数和使用的命令。
使用Current Activity Monitor的一个最大优点就是可以向数据库管理员提供特定进程的所有信息,管理员可以使用该信息来停止一个进程。
使用Current Activity Monitor的步骤如下:
(1)运行SQL Server Enterprise Manager,打开Management。
(2)单击Current Activity项,显示了Process Info、Locks/Process ID和Locks Object。如图17-10所示。
图17-10 展开Current Activity
(3)单击一个进程将显示Process Details对话框,如图17-11所示。在该对话框中,可以查看用户调用的最后一条语句,停止一个进程。
图17-11 Process Details对话框
(4)单击Send Message按钮,打开如图17-12所示的Sena Message对话框,在文本框中键入要发送的消息文本,单击Send按钮开始发送。
图17-12 Send Message对话框
除上面介绍的几种工具外,还可以使用系统存储过程sp_who、sp_monitor和sp_lock等了解服务器的运行状况。
使用系统存储过程sp_who可以查看SQL Server服务器的当前用户和进程信息。语法形式如下:
sp_who[’login’]
login是SQL Server服务器上的登录用户名称。如果不使用该选项,则返回服务器当前所有用户的进程信息。
在WOOY-SWQ服务器上使用sp_who系统存储过程,检索该服务器上的用户进程信息,返回的结果如图17-13所示。
可以看到,sp_who的返回结果包含以下内容:
n spid:进程标识号。
n status:进程运行状态。
n loginname:与指定进程相关的登录标识名称。
n hostname:启动进程的主机名称。
n blk:阻塞进程名称,如果为0,表示进程未被阻塞。
n dbname:进程操作的数据库名称。
n cmd:进程执行的命令。
图17-13 使用sp_who返回的结果
使用sp_monitor可以获得全局变量关于工作情况的记录以及最近一次执行该系统存储过程后全局变量的变化情况。
图17-14是使用sp_monitor得到的结果。
可以看到,sp_monitor的返回结果包含以下内容:
n last_run:最近一次执行sp_monitor的时间。
n current_run:这次执行sp_monitor的时间。
n seconds:两次运行sp_monitor的时间间隔。
n cpu_busy:返回SQL Server占用CPU的时间。
n Io_busy:返回SQL Server输入/输出时间。
n Idle:SQL Server处于空闲状态的时间。
n Packets_received:SQL Server读取的网络数据包数。
n Packet_send:SQL Server发送的网络数据包数。
n Packet_errors:SQL Server在读取和发送过程中遇到的错误数。
n Total_write:SQL Server总的写入次数。
n Total_read:SQL Server总的读取次数。
n Total_errors:SQL Server总的错误次数。
n Connections:登录或尝试登录服务器的次数。
图17-14 使用sp_monitor返回的结果
使用系统存储过程sp_lock可以查看SQL Server系统或特定进程对资源的锁定信息。语法形式如下:
sp_lock[spid1],[spid2]
图17-15是使用系统存储过程sp_lock查看锁定信息的结果。
图17-15 使用sp_lock的结果
可以看到,sp_monitor的返回结果包含以下内容:
n Spid:SQL Server进程标识号。
n Dbid:锁定资源的数据库标识号。
n Objld:锁定资源的数据库对象标识号。
n Indld:锁定资源的索引标识号。
n Resource:锁定资源的描述信息。
n Mode:锁定资源模式。
n Status:请示状态,有GRANT、WAIT和CNVRT三种,分别表示锁处于锁定状态、等待状态和转换状态。
本章介绍了三种监视服务器性能的工具:SQL Server Performance Monitor、SQL Server Enterprise Manager和系统存储过程sp_monitor。学习本章,应掌握以下内容:
n 使用性能监视器(Performance Monitor)可以检测本地和网络中其他计算机的不同对象的信息,可以监视数据库、缓存、日志、内存、线程等信息。
n 使用性能监视器可以用三种方式监视计算机的活动:图形监视方式、警报监视方式、报表监视方式。读者应掌握这三种方式的具体操作步骤。
n 学会使用系统存储过程sp_who、sp_monitor和sp_lock等了解服务器的运行状况。