You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在T-SQL中解析xp_readerrorlog结果里单引号间的值

提取SQL Server错误日志中登录成功记录的用户名

假设你的临时表名为#ErrorLog,包含LogText列,且已经过滤出以Login succeeded开头的行,可以通过SQL Server的字符串函数组合来提取单引号内的内容:

核心SQL语句

SELECT 
    SUBSTRING(
        LogText,
        CHARINDEX('''', LogText) + 1,
        CHARINDEX('''', LogText, CHARINDEX('''', LogText) + 1) - CHARINDEX('''', LogText) - 1
    ) AS LoginUserName
FROM #ErrorLog
WHERE LogText LIKE 'Login succeeded%'

函数说明

  • CHARINDEX('''', LogText):定位第一个单引号的位置(SQL中用两个单引号表示转义的单引号)
  • CHARINDEX('''', LogText, 第一个单引号位置 + 1):从第一个单引号的下一位开始,定位第二个单引号的位置
  • SUBSTRING:从第一个单引号的下一位开始截取内容,截取长度为两个单引号的位置差减1,刚好得到单引号包裹的用户名

测试验证

如果#ErrorLog中有以下两条记录:

Login succeeded for user 'Frank'. Connection made using SQL Server authentication.
Login succeeded for user 'Domain\User_999'. Connection made using Integrated authentication.

执行上述SQL后,会得到结果:

LoginUserName
Frank
Domain\User_999

内容的提问来源于stack exchange,提问作者user2233506

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:31:22