利用MSSQL监控工具保障系统运行顺利

利用MSSQL监控工具保障系统运行顺利

在当今信息化时代,对于企业来说,信息系统已经成为了重要的基础设施之一,而对于这些系统的正常运行,数据库则是其中的重要组成部分。MSSQL作为微软的数据库产品,在企业业务中运用越来越广泛。不过,由于数据库的庞大和复杂性,操作和维护也变得越来越困难,例如如何在保证MSSQL的高可用性的同时确保系统的高效稳定运行。这时候就需要用到MSSQL的监控工具来协助我们解决问题。

一、SQL Server Profiler

SQL Server Profiler是MSSQL自带的一个强大的工具,它可以跟踪和记录数据库中的活动和事件。使用它可以监控用户在数据库中执行的各种操作,如查询数据、修改数据、删除数据等,还可以检测到出现的错误和锁定情况,这些信息有助于我们定位和解决问题。

1.1 使用SQL Server Profiler监控系统性能

使用SQL Server Profiler可以监控数据库的性能,并帮助我们找出影响数据库性能的瓶颈,比如高负载时CPU或磁盘IO使用率高等。我们可以设置一个跟踪事件,从而收集数据库性能数据。例如,我们可以编辑一个模板,选择需要跟踪的事件,然后指定需要监控的指标,例如CPU使用率、每秒事务数、平均响应时间等。具体的操作可以参考以下代码示例。

SELECT * FROM sys.traces

WHERE is_default = 1;

这条SQL语句可以查询到MSSQL默认跟踪模板的ID,然后我们可以使用以下代码创建一个跟踪模板,并设置需要监控的指标值。

USE master;

GO

EXEC sp_trace_create @traceid OUTPUT,

@options = 2,

@tracefile = N'D:\SQLTrace.trc';

/* 选择需要监控的事件 */

DECLARE @on BIT = 1;

EXEC sp_trace_setevent @traceid, 10, 1, @on;

EXEC sp_trace_setevent @traceid, 10, 9, @on;

EXEC sp_trace_setevent @traceid, 10, 6, @on;

EXEC sp_trace_setevent @traceid, 10, 10, @on;

EXEC sp_trace_setevent @traceid, 10, 14, @on;

EXEC sp_trace_setevent @traceid, 10, 11, @on;

EXEC sp_trace_setevent @traceid, 10, 12, @on;

/* 设置需要监控的指标值 */

EXEC sp_trace_setstatus @traceid, 1;

使用以上代码,我们可以创建一个跟踪事件,并指定需要监控的指标值。

1.2 使用SQL Server Profiler监控数据库安全性

我们可以使用SQL Server Profiler监控数据库的安全性,这可以帮助我们检测恶意攻击和审计数据库访问。使用Profiler可以捕获数据库中的所有访问请求,包括访问数据库对象、执行Transact-SQL语句和进行身份验证。我们可以使用如下代码创建一个捕获登录和登出请求的跟踪事件。

DECLARE @TraceID INT;

DECLARE @maxfilesize BIGINT = 5;

DECLARE @filepath NVARCHAR(200)

SET @filepath = N'C:\TraceDirectory\TraceOutput';

EXEC sp_trace_create @TraceID OUTPUT, 2, @filepath, @maxfilesize, NULL ;

EXEC sp_trace_setevent @TraceID, 14, 1, 1;

EXEC sp_trace_setevent @TraceID, 14, 22, 1;

EXEC sp_trace_setevent @TraceID, 14, 31, 1;

EXEC sp_trace_setevent @TraceID, 14, 34, 1;

EXEC sp_trace_setfilter @TraceID, 8, 0, 7, N'TestUser';

EXEC sp_trace_setstatus @TraceID, 1;

在以上代码中,使用sp_trace_create存储过程创建一个跟踪事件,并设置要跟踪的事件和属性。使用sp_trace_setfilter存储过程可以过滤要捕获的事件,例如设置只捕获TestUser帐户的请求。使用sp_trace_setstatus存储过程可以启动跟踪事件。

二、SQL Server Management Studio

SQL Server Management Studio(SSMS)是一个强大的管理和开发工具,用于管理MSSQL的配置、维护、调试和监控。它还提供了访问其他工具的链接和集成,例如SQL Server Profiler、Database Engine Tuning Advisor和SQL Server Agent。

2.1 使用SQL Server Management Studio监控系统性能

使用SQL Server Management Studio可以监控系统性能,方法是使用Activity Monitor。在Management Studio的对象资源管理器中,右键单击一个实例,然后单击“活动监视器”,打开此监视器。活动监视器包括几个不同的标签页,可以提供关于响应时间、CPU和磁盘IO使用率、单个线程的等待信息等的数据。我们可以根据需要选择指标,并选择排序方式进行查看数据。例如,我们可以选择对象,然后选择“cpu使用率”进行排序,以便识别最耗费CPU资源的查询。

2.2 使用SQL Server Management Studio监控数据库的空间和性能

我们可以使用Management Studio的“SQL Server轨迹”标签页监控数据库的性能,该标签页允许我们捕获有关SQL Server数据库性能的详细信息。详细信息包括:locks的使用情况、prcoesses详细信息、查询统计信息以及各种事件信息等。捕获事件的过程与使用Profiler相似,只是操作界面略有不同。与Profiler相比,SOSM的资源占用较小,适用于部署在远程服务器上进行远程监控,同时提供了详细的指标值,相较于类似Task Manager的性能查看工具,更为全面和明细。

三、SQL Server每日日志监控

如果您是一位系统管理员,那么肯定要定期监视MSSQL的日志。每日审计日志是MSSQL Server的关键组件之一,其中包含有关可能指示系统的任何进行或错误的详细信息。

3.1 在MSSQL Server Configuration Manager中开启MSSQL日志

在日志监控之前,我们首先需要确定我们已经正确地配置了日志选项。在MSSQL中,我们需要在SQL SERVER Configuration Manager中开启日志选项。以下是一些配置建议的示例代码:

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;

RECONFIGURE;

EXEC xp_cmdshell 'mkdir X:\SQLServerLogs\';

EXEC sp_configure 'show advanced options', 0;

RECONFIGURE;

EXEC sp_configure 'default trace enabled', 1;

RECONFIGURE;

配置按上述代码执行后,我们的MSSQL服务器就会开启默认的每日日志功能。然后,我们就可以检查日志,找到或记录我们需要监控的几个主服务器活动。

3.2 使用SQL储存过程规范日志的自动清理

由于日志文件大小随着时间的推移会变得庞大,因此进行自动清理已经成为了必要活动。我们可以通过使用MSSQL内置的删除过程,编写自动清理脚本,使得清理日志文件的过程高效自动化。

以下SQL代码展示了如何使用stored procedures来自动清理日志:

USE AdventureWorks2012;

GO

-- 日志文件清理

EXEC sp_cycle_errorlog;

GO

--备份操作日志并清理

DECLARE @path varchar(256);

SELECT @path = path

FROM sys.traces

WHERE id = 1;

DECLARE @dt NVARCHAR(8);

DECLARE @sb NVARCHAR(8);

SELECT @dt= CONVERT(NVARCHAR(8), GETDATE(), 112);

SELECT @sb= CONVERT(NVARCHAR(6), GETDATE(), 112);

SET @path = REPLACE(@path, '.trc',N'' + @sb + '.trc');

EXEC sp_trace_create 1, 0, @path, 1024, NULL ;

-- Trace the backup and restore event.Type为115表示备份过程,116表示还原过程

EXEC sp_trace_setevent 1, 115, 1, 1;

EXEC sp_trace_setevent 1, 115, 9, 1;

EXEC sp_trace_setevent 1, 116, 1, 1;

EXEC sp_trace_setevent 1, 116, 9, 1;

--清除备份日志

EXEC sp_trace_setstatus 1, 0;

EXEC sp_trace_setstatus 1, 2;

EXEC sp_trace_setstatus 1, 0;

DROP TABLE #LogInfo;

GO

有了以上步骤,我们就可以自动化地清除我们的日志。

总结

MSSQL Server作为企业级数据库的一个重要应用,它的操作和维护都涉及到运维的各个层面。在保证MSSQL的高可用性的同时,确保系统的高效稳定运行,监控工具的重要性也就凸显出来。从SQL Server Profiler到SQL Server Management Studio再到日志监控,每个工具都有自己独特的优势,但他们的共同目标都是监控和保护数据库的性能和安全。

数据库标签