• SQL SERVER


    转自:https://blog.sqlauthority.com/2016/04/03/sql-server-changed-password-sql-login-interview-question-week-065/?tdsourcetag=s_pctim_aiomsg

    我的客户注意到,随机地,SQL“SA”帐户密码被重置,他们想知道谁在做这件事?我知道SQL Server错误日志不记录登录密码更改事件。所以我的下一个想法是“默认跟踪”应该有这些数据。在我的实验室机器上,我在查询下面运行以查找捕获的事件

    1
    2
    3
    4
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @Trace_ID INT;
     
    SELECT @Trace_ID = id
    FROM sys.traces
    WHERE is_default = 1;
     
    SELECT t.EventID
        ,e.NAME AS Event_Description
    FROM sys.fn_trace_geteventinfo(@Trace_ID) t
    INNER JOIN sys.trace_events e ON t.eventID = e.trace_event_id
    WHERE e.name like '%Audit%'
    GROUP BY t.EventID
        ,e.NAME;

    EventID Event_Description 
    - ------- 
    18审计服务器启动并停止
    20审计登录失败
    102审计数据库范围GDR事件
    103审计架构对象GDR事件
    104审计Addlogin事件
    105审计登录GDR事件
    106审计登录更改属性事件
    108审计添加登录到服务器角色事件
    109审核添加数据库用户事件
    110审核将成员添加到数据库角色事件
    111审核添加角色事件
    115审核备份/还原事件
    116审核DBCC事件
    117审核更改审核事件
    152审核更改数据库所有者
    153审核架构对象获取所有权事件
    175审核服务器更改跟踪事件

    SolarWinds的

    遗憾的是,SQL Server默认跟踪仅记录审核登录更改属性事件类,而不记录审核登录更改密码事件类。因此,客户端可能需要运行自定义跟踪来跟踪密码更改。

    因此,我们别无选择,只能通过新的跟踪进行监控。我想到的另一个想法是我们可以使用fn_dblog来读取事务日志。我告诉我的客户,这个方法是完整无证的。此方法的另一个问题是,如果检查点被触发,则数据将在T-log中刷新,因为主数据库处于简单恢复模型中。但对于他们至少调试系统中发生的事情来说,这是一个很好的开始。

    以下是我提供的脚本故障排除方法:

    创建登录以进行演示

    1
    2
    3
    4
    6
    USE [master]
    GO
     
    CREATE LOGIN [SQLLogin1] WITH PASSWORD=N'@Very$trongP@ssw0rd123', DEFAULT_DATABASE=[master],
    DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO

    用它来更改密码

    1
    2
    3
    4
    USE [master]
    GO
    ALTER LOGIN [SQLLogin1] WITH PASSWORD=N'VerystrongP@ssword123'
    GO

    查询以查找更改密码的人员

    1
    2
    3
    4
    SELECT  [Transaction SID]
        ,suser_sname([Transaction SID]) AS 'Login Name'
    FROM::fn_dblog(DEFAULT, DEFAULT)
    WHERE [Transaction Name] = 'ALTER LOGIN'

    SQL SERVER  - 谁更改了SQL登录密码?  - 第0周的采访问题#01

    查询以查找更改了哪个帐户密码

    1
    2
    3
    SELECT [Lock Information]
    FROM::fn_dblog(DEFAULT, DEFAULT)
    WHERE [Lock Information] LIKE '%SERVER_PRINCIPAL%'

    SQL SERVER  - 谁更改了SQL登录密码?  - 本周访谈问题#065谁-02

    现在我们可以使用下面的内容来查找哪个帐户是270(如上所示)

    1
    2
    3
    SELECT name 
    FROM sys.server_principals
    WHERE principal_id = 270

    SQL SERVER  - 谁更改了SQL登录密码?  - 本周访谈问题#065谁-03

    你有没有用过这种无证的命令?请谨慎使用,因为这不是受支持的命令。因此请确保您在使用时要小心。我相信你有很多有趣的方式可以使用这个博客,我非常有兴趣了解其中的一些。请告诉我。

  • 相关阅读:
    Java函数调用
    Java编程工具的介绍
    Java关键字及作用
    Java面向对象
    Java代码内容概述
    Java构造方法
    Java面向对象
    Java数组概述和定义
    JDBC工具类,基于C3P0的数据库连接池,提供获取连接池、获取连接对象、释放资源和封装事务操作的方法
    图片爬虫工具,可以爬取指定网页的图片
  • 原文地址:https://www.cnblogs.com/gered/p/10571510.html
Copyright © 2020-2023  润新知