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

SQL存储过程登录日志异常:登录失败仍记录日志

解决登录日志仅在成功时写入的问题

你的问题出在日志插入语句位于存储过程的主逻辑(BEGIN/END块)之外,无论登录校验是否通过,这条插入语句都会被执行。以下是修改后的存储过程代码,确保只有登录成功时才写入日志:

ALTER PROCEDURE [dbo].[sp_KullaniciGiris]
@username varchar(10),
@pw nvarchar(20)
AS
BEGIN
    -- 执行登录校验查询
    SELECT * FROM Kullanicilar WHERE username = @username AND pw = @pw AND IsActive = 1;

    -- 检查校验查询是否返回有效用户(即登录成功)
    IF @@ROWCOUNT > 0
    BEGIN
        -- 写入登录成功日志
        INSERT INTO LogIslem(Kullanici, LogText, Sayfa, Islem)
        VALUES(
            @username,
            'username:' + @username + ' pw:' + @pw,
            'FormLogin',
            'Login Success' -- 明确标记登录状态,便于日志分析
        );
    END
END

关键修改说明:

  • 将日志插入逻辑移入BEGIN/END块内部,通过@@ROWCOUNT变量判断前面的校验查询是否返回了匹配的用户(@@ROWCOUNT会返回上一条SQL语句影响的行数)
  • 把Islem字段的值改为Login Success,后续排查日志时能更直观区分登录状态
  • 如果需要记录登录失败的日志,可在IF块后添加ELSE分支,插入对应的失败日志内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:02:10