• Windows Log和SQL SERVER errorlog


    前言

    今天学习了下Windows Log和SQL SERVER errorlog,系统日志还是很有用的,具体要看用在什么地方,下面只记录自己工作涉及到的东西,其他的以后遇到再说吧。里面的部分资料我引用了 听风吹雨大神的资料,大家可以看下,写的非常好,这里


     

    一、Windows Log

    打开方式:电脑——开始——运行 ——eventvwr.msc

    或者

    电脑——开始——控制面板——管理工具——事件查看器

    或者

    直接搜索windows log

    需求:查看server开机和关机信息

    需要选择第三点

    4处:6005表示开机,6006表示关机

    5处:清除筛选条件

    6处:可以点击右键选择将时间分组或者按照时间排序

    输好后点击确定,在主要窗口就会筛选出我们电脑最近时间的开机关机情况


    二、SQL SERVER errorlog

    SQL Server 使用ErrorLog记录SQL Server启动和运行过程中的信息

    默认情况下,SQL Server 保存 7 个 ErrorLog 文件,分别命名为: ErrorLog,ErrorLog.n(n=1,2,3,4,5,6)。ErrorLog 文件包含的信息最新,ErrorLog.6 文件包含的信息最老。每次重启 SQL Server 时,这些日志文件都做如下循环: 删除 ErrorLog.6 文件,将ErrorLog.5重命名为ErrorLog.6,依次类推,直到将ErrorLog重命名为ErrorLog.1,最后新建一个ErrorLog文件,用于存储SQL Server 运行过程的信息。

    SQL Server Agent ErrorLog的文件名是:SQLAgent.n(n=1,2,3,4,5,,,,)。

    ErrorLog的存放路径是在:C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLLog

    1,查看Errorlog的元数据

    使用 sys.xp_enumerrorlogs 查看 ErrorLog 文件的创建日期和大小,其创建日期就是第一条记录插入的日期。

    exec sys.xp_enumerrorlogs

    2,读取ErrorLog的信息

    SQL Server提供了存储过程sys.xp_readerrorlogsys.sp_readerrorlog,用于查看错误日志。

    sys.xp_readerrorlog 存储过程有7个参数,按照参数的顺序,它们依次是:

    1. @Archive,存档编号(0~99),其值是 sys.xp_enumerrorlogs返回的Archive#字段的值, 默认值是0,0 代表的是ErrorLog,1代表的是ErrorLog.1。
    2. @Logtype,日志类型,有效值是1和2,1代表SQL Server日志,2代表SQL Server Agent日志,默认值是1。
    3. @SearchText1,查询包含的字符串,大小是255,默认值是null,
    4. @SearchText2,查询包含的字符串,大小是255,默认值是null,参数3和参数4的逻辑关系是and(与关系),表示同时包含这两个文本。
    5. @StartTime,消息的开始时间
    6. @End'Time,消息的结束时间
    7. @Order,对结果排序,按LogDate排序(Desc、Asc)对输出结果排序

    sys.sp_readerrorlog有四个参数,和sys.xp_readerrorlog的前四个参数相同,sys.sp_readerrorlog内部使用sys.xp_readerrorlog来实现。

    exec sys.sp_readerrorlog 0,1,'login','failed'

    二、xp_readerrorlog实现错误日志过滤
    我们还可以通过执行存储过程EXEC xp_enumerrorlogs返回表的形式进行查看信息。xp_enumerrorlogs存储过程还提供参数,默认值为1(如果没有提供参数表示传入的参数为1),2的时候表示查询SQL Server 代理错误日志列表

    (二) 接下来了解系统存储过程:xp_readerrorlog,它一共有7个参数,分别是:

    1. 存档编号(0~99)

    2. 日志类型(1为SQL Server日志,2为SQL Server Agent日志)

    3. 查询包含的字符串

    4. 查询包含的字符串

    5. LogDate开始时间

    6. LogDate结束时间

    7. 结果排序,按LogDate排序(Desc、Asc)

    (三) 接着讲解xp_readerrorlog系统存储过程的运用:

      1. 如果你想查询当前SQL Server错误日志文件(当前正在写入错误信息的文件)的内容,请执行SQL脚本:EXEC xp_readerrorlog,存档编号的默认值为0,它相当于打开文件ERRORLOG(路径可参考Figure3),如果想读取其它的历史错误日志文件,直接填写对应的存档编号就可以了,下面3条SQL语句的执行效果是一样的:

    --Script2:查询当前SQL Server日志信息
    EXEC xp_readerrorlog
    EXEC xp_readerrorlog 0
    EXEC xp_readerrorlog 0,1

     注:其实之前一直有个疑问,如下图,就是为什么如下两个errorlog时间相隔这么短,难道这2个时间点都是重启的server吗?后面我自己做了实验发现了,原来每次关闭SQL SERVER Agent就会产生一个 errorlog,而开启的时候又会产生一个,所以一个重启server或者sql server services都会涉及到SQL SERVER Agent的关闭和开启,就会有2个errorlog产生。第一个是关闭agent service第二个是开启agent service。

    (四)查询SQLSERVER开机和关机的时间

    --开机的时间
    exec sys.sp_readerrorlog 1,1,'Registry startup parameters'
    --关机的时间
    exec sys.sp_readerrorlog 1,1,'Service Broker manager has shut down'

     (五)读取alwayson failover的信息

    exec sys.sp_readerrorlog 0,1,'failover'

    该语句如果是在failover之前主的server上面运行的,得到的信息如下,主server一共经历了2个状态变成辅助的

    该语句如果是在failover之前辅助的server上面运行的,得到的信息如下,辅server一共经历了4个状态变成主的

  • 相关阅读:
    go context
    go etcd
    go logs
    go config
    go tail
    kafka与zookeeper
    go kafka
    go mysql
    array_map array_walk
    单独配置的nginx mysql 重启
  • 原文地址:https://www.cnblogs.com/ziqiumeng/p/10677092.html
Copyright © 2020-2023  润新知