** 收集并存储性能监控器数据到 SQL Server表 **
?
?
当我们需要监控数据库 SQL Server 服务器性能的时候,有些数据库管理人员可能会选择 Windows 为我们提供的‘性能’监控器来操作(开始菜单 à 管理工具 à 性能)。
如果可以将性能监控器采集到的数据记录到 SQL Server 的数据库表中去,很多工作对我们来说也许方便得多。
开启性能监控器
点击开始菜单 à 运行 à 执行( perfmon )
或者
开始菜单 à 管理工具 à 性能
?
就可以看到下面的画面了
?
定义性能监控器 LOG
??????? ? 如果要设置监控器的 LOG ,首先展开树形结构的 性能日志和报警 ,会出现三个你可以选择的项目(计数器日志,跟踪日志,报警),现在我们先设置计数器日志。右键点击计数器日志的这个节点,从弹出的菜单中选择 新建日志设置 ,填写 日志名称 并确定。就会谈出下面的画面:
??? 我填写的名称是 SQL Server 所以当前的日志文件名会显示:
C:\Perflogs\SQL_Server_000001.blg
??????? 下一步就是要定义你将要收集或者说将要监控的项目。我们会选择几个不同的监控项目作为这个我们建立的这个 LOG 的记录。首先我们先选择 Processor Time 。点击添加按钮,选择 %Processor Time 之后点击添加,就如同下面这张同我们看到的那样。
????? ? 下面我们选择内存的监控,在性能对象下拉框中选择 Memory ,然后再下面计数器部分选择 ** Pages/sec ** 计数并点击添加,如下图
??????? 之后我们按照上面的步骤重复的操作,把我们需要监控的项目加入到列表中去。在将所有要监控的项目都添加完成后,点击关闭按钮就可以了,可以用下面的图作参考:
???? 如同上面途中我们看到的样子,我选择了许多不同的监控项目。我在下面给大家罗列以下:
\\CN-BJ-TIGER\Memory\Available Bytes
\\CN-BJ-TIGER\Process(sqlservr)\Page Faults/sec
\\CN-BJ-TIGER\Process(sqlservr)\Working Set
\\CN-BJ-TIGER\Processor(_Total)%Priviledged Time
\\CN-BJ-TIGER\Processor(_Total)%Processor Time
\\CN-BJ-TIGER\Processor(_Total)%User Time
\\CN-BJ-TIGER\SQLServer:Buffer Manager\Buffer cache hit ratio
\\CN-BJ-TIGER\SQLServer:General Statistics\User Connections
\\CN-BJ-TIGER\SQLServer:Memeory Manager\Total Server Memory (KB)
\\CN-BJ-TIGER\SQLServer:SQL Statistics\Batch Request/sec
\\CN-BJ-TIGER\System\Context Switches/sec
\\CN-BJ-TIGER\System\Processor Queue Length
?
上面表中每一个项目都分成三个段表示,第一段表示服务器名称,第二段表示要监控的对象是什么,第三段表示监控的项目。
选择完全部的监控项目之后,接下来还要继续作一些事情才可以完成对 LOG 的定义。我们需要考虑一下,我们对数据的采样间隔,用上面的图来举例子,可以在对话框的下方设定采样的间隔时间和时间单位(初始是 15s )。不过一般情况下 15s 不会适合所有的监控项目,所以要根据每个不同服务器的配置来决定具体的间隔时间,因为监控室必定要消耗服务器资源的,而且服务器也会产生大量的数据收集工作。
上面的工作做完后,现在开始设定 LOG 文件的存储路径和方式以及执行的时间计划。点击 日志文件 选项卡:
为了比较容易的将文件导入到 SQL Server 中,需要选择有逗号分割形式的文本文件来存储信息。这样的话,可以选择 ** 文本文件 – CSV ? ** 的格式来存储 LOG 文件。
??????? 再 run.bat 中键入
?????????????????????? isql -E -d pubs -i c:\perform\go.sql
??????? 保存
?
??????? 然后建立 SQL 脚本文件如下 --- 我建立的 SQL 脚本文件名是 go.sql
????????????? set ansi_nulls on
set ansi_warnings on
?
select * into Perflog
from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;HDR=NO;DATABASE=c:\perflogs', sql_server_000001#csv)
?
set ansi_nulls off
set ansi_warnings off
go
?
之前要改变一下数据库服务器的连接设置
将 ? ANSI warning
???? ? ANSI nulls
两个选项选中
好到这里,我们就可以从 PUBS 数据库中的 Perflog 表中找到监控的记录了