按正常来说,管理SQL Server数据库的时候,一般采用sa通过SQL Server认证或者采用hostname\Administrator Windows认证方式进行登录的。但我最近接手了一套SQL Server 2019,想登陆上数据库查看状况的时候,发现windows 认证和SQL Server认证都登录不上这套SQL server 2019数据库。开始的时候,使用Windows认证方式登录,不需要密码,但是报了18456的错误。后面拿到了一个看似正确的sa用户密码,尝试登陆,第一次登录确认是通过密码认证了,但是还是报错无法进入到数据库。后面再多次尝试登陆的时候,报错号也变成了18456。网上比较少写到Windows认证登录失败情况的材料,两种认证方式登录都失败情况的材料更是少之又少,多数是遇到sa数据库用户SQL Server密码认证登录失败的材料。
报错情况
Server Name: xxxx-0052Error Number: 18456Severity: 14 State: 1Line Number: 65536

解决方法
解决方法其实也不难,配置单用户模式登陆数据库,大概的步骤如下:
打开SQL Server服务配置管理器-->选择SQL Server(MSSQLSERVER)-->查看属性-->查看启动参数-->编辑启动参数(加上-m)-->重启SQL Server(MSSQLSERVER)服务-->使用系统最高管理账号使用MSSM工具通过Windows认证方式登录数据库。
具体操作如下
--SQL Server 2019

SQL Server 2019的服务属性中,启动参数有自己的选项卡,通过在启动参数的选项卡中通过"add"编辑框进行编辑并添加,然后点击“应用”或者“确定”按钮进行保存,然后会有弹框提示需要重启SQL Server(MSSQLSERVER)服务才能生效。在高级选项卡里也有启动参数条目,但不能直接进行编辑的。
--SQL Server 2008 R2


SQL Server 2008 R2的服务属性中,启动参数在高级选项卡里,找到“启动”条目,通过直接启动参数进行添加,即在启动参数最后添加上内容";-m",然后点击“应用”或者“确定”按钮进行保存,然后会有弹框提示需要重启SQL Server(MSSQLSERVER)服务才能生效。
重启SQL Server(MSSQLSERVER)服务
重启SQL ServerSQL ServerMSSQLSERVER)服务,使用MSSM工具使用Administrator通过Windows认证方式登录,这种采用单用户模式登陆数据库,只能用系统最高权限的用户操作,只允许一个用户登录到数据库。

只要登录到数据库之后,就可以解决任何问题了。首先要解决sa密码认证方式的登录问题,之后再解决Windows认证方式登录的问题。
切记,SQL Server数据库处于单用户模式下,只能Windows认证方式可以登录,sa密码认证方式是不能登录的。所以修改了sa密码认证登录的配置之后,还不能马上可以登录数据库,需要返回去,根据以上步骤进入到服务属性里,将刚才添加的启动参数"-m"这个参数去除,并重启服务,这样SQL Server数据库就恢复到了多用户模式。
好啦,这期就分享到这啦,希望可以帮助到有需要的伙伴,谢谢!




