sqlserver实例状态web监控

  • 通过 执行 SELECT 1 可以获取 SQL Server 的连通性,根据这个思路,可以编写一个web页面,将 SELECT 1 的执行结果作为页面的返回值添加到 zabbix 监控中,从而达到实时监控的目的。
实例状态 返回值
正常 {"Status":"UP","Result":1,"Message":""}
失败 {"Status":"Down","Result":"0,"Message":"具体错误信息"}

ASP.NET (C#) 语言

  • 可将下面的脚本保存为 mssql_status.ashx,存放到 IIS 站点下面。
<%@ WebHandler Language="C#" Class="SqlStatus" %>
using System;
using System.Data.SqlClient;
using System.Web;
using System.Web.Script.Serialization;

public class SqlStatus : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json; charset=utf-8";
        // 数据库连接连接串
        string connStr = "Server=192.168.31.104;Database=master;User Id=bigdata_readonly;Password=123456;TrustServerCertificate=True;";
        var result = new { Status = "DOWN", Result = 0, Message = "" };

        try
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT 1", conn))
                {
                    result = new { Status = "UP", Result = (int)cmd.ExecuteScalar(), Message = "" };
                }
            }
        }
        catch (Exception ex)
        {
            result = new { Status = "DOWN", Result = 0, Message = ex.Message };
        }

        context.Response.Write(new JavaScriptSerializer().Serialize(result));
    }

    public bool IsReusable { get { return false; } }
}

效果展示

  • 场景1:SQL Server 服务正常的状态

  • 场景2:SQL Server 服务异常的状态

Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2026-05-15 20:01:43

results matching ""

    No results matching ""