失败MSSQL端口登录失败:坑太深!

1. 背景介绍

在运维工作中,我们常常需要使用MSSQL Server数据库。一次我遇到了一个有趣的问题:它连不上MSSQL Server,而错误提示是“登录失败”。我当时非常疑惑,因为我一直在使用相同的用户名和密码登录。我开始研究,查阅了大量文献,最终发现了这个问题的根本原因。

2. 症状

当我尝试使用相同的用户名和密码登录MSSQL Server的时候,出现了错误:“登录失败。检查连接和登录属性。确定服务器是否正在运行,是否启用了远程连接,并且是否通过防火墙。错误:26 - 错误定位到服务器/实例特定的错误。无法连接到服务器“XXXXX”。”这个错误非常具有欺骗性,因为它看起来像是服务器没有运行或者防火墙的问题。

3. 原因探究

3.1 TCP/IP 协议问题

我发现,在我的SQL Server配置管理器中,有两个选项,“使用共享内存”和“使用TCP/IP”。我一开始尝试使用共享内存连接,但是失败了。所以我启用了TCP/IP。但是,我发现服务器端口没有设置。

在注册表中查找“SqlServer”:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp

在那里,我看到了与TCP/IP相关的设置,我发现服务器设置为“0”,这意味着SQL Server将使用默认的动态端口。我尝试将它更改为1433端口,但是连接仍然失败。

3.2 防火墙问题

我开始怀疑是防火墙的锅,但是我的Windows防火墙已经禁用了。我还尝试了使用其他第三方防火墙,但这也没有解决问题。

3.3 登录凭据

然后,我开始怀疑是登录凭据的问题。我确认了用户名和密码,但仍然无法连接。我甚至尝试使用Windows身份验证,但这也没有解决问题。

4. 最终解决方案

在经过长时间的研究和尝试之后,我发现了真正的原因:我没有允许我的用户访问MSSQL Server。

USE master

GO

CREATE LOGIN [myUser] WITH PASSWORD='myPassword'

GO

USE myDatabase

GO

CREATE USER [myUser] FOR LOGIN [myUser]

GO

ALTER ROLE [db_owner] ADD MEMBER [myUser]

GO

我使用上述SQL脚本为我的用户创建了一个登录用户,并将其添加到我的数据库中。然后,我将数据库用户添加到了db_owner角色中,这样我的用户就拥有了数据库管理权限。

5. 总结

在解决这个问题的过程中,我发现MSSQL Server的错误提示非常欺骗性。即使你看起来已经确认了所有设置,你依然可能会被错误信息所困扰。通过对错误信息进行详细的分析和研究,最终成功解决了这个问题。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签