SQLserver 数据库, 用户 ‘sa‘ 登录失败。 (Microsoft SQL Server,错误: 18456)

完整修复脚本

-- 1. 检查当前设置
SELECT 
    '当前状态' AS 描述,
    CASE 
        WHEN EXISTS (SELECT * FROM sys.sql_logins WHERE name = 'sa' AND is_disabled = 0) 
        THEN 'sa 已启用' 
        ELSE 'sa 已禁用' 
    END AS sa状态,
    (SELECT CAST(value AS INT) FROM sys.configurations WHERE name = 'LoginMode') AS 身份验证模式代码,
    CASE (SELECT CAST(value AS INT) FROM sys.configurations WHERE name = 'LoginMode')
        WHEN 1 THEN 'Windows 身份验证'
        WHEN 2 THEN '混合模式'
        ELSE '未知'
    END AS 身份验证模式描述;

-- 2. 修改身份验证模式为混合模式
EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'LoginMode',
    REG_DWORD,
    2;

PRINT '注意:需要重启 SQL Server 服务才能使更改生效!';

-- 3. 检查注册表是否已修改
DECLARE @LoginMode INT;
EXEC xp_instance_regread 
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\MSSQLServer',
    N'LoginMode',
    @LoginMode OUTPUT;

SELECT 
    '修改后状态' AS 描述,
    @LoginMode AS 注册表LoginMode值,
    CASE @LoginMode
        WHEN 1 THEN 'Windows 身份验证'
        WHEN 2 THEN '混合模式'
        ELSE '未知'
    END AS 身份验证模式;

🔄 重启 SQL Server 服务的方法
选择一种方法重启服务:

1.SQL Server 配置管理器(推荐)

找到 SQL Server (MSSQLSERVER)

右键 → 重新启动

2.服务管理器

按 Win + R,输入 services.msc

找到 SQL Server (MSSQLSERVER)

右键 → 重新启动

3.命令行
cmd

net stop MSSQLSERVER
net start MSSQLSERVER

✅ 验证修复成功
重启服务后:

1.测试 sa 登录

2.运行验证查询

-- 使用 sa 登录后运行
SELECT 
    '登录成功!' AS 状态,
    SUSER_NAME() AS 当前用户,
    @@SERVERNAME AS 服务器名称,
    GETDATE() AS 当前时间;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值