SQL打不开数据库服务器,多半不是软件坏了,而是服务没启动、端口被拦、实例名写错或登录认证配置有误,先按“服务状态→网络端口→登录认证”的顺序排查,八成能直接解决。
遇到SQL Server连不上服务器,很多人的第一反应是卸载重装,其实完全没必要,数据库连接失败的原因非常集中,只要你沿着服务、端口、账号这三条线走一遍,基本都能定位到具体问题。
sql server 无法连接到服务器的常见场景与排查顺序
先别急着改配置,打开SQL Server时如果提示“无法连接到服务器”,先看是本地连不上,还是局域网内其他电脑连不上,这两种情况的处理重点完全不一样。
- 本地连不上:优先检查SQL Server服务有没有运行,以及实例名有没有写对。
- 局域网其他电脑连不上:优先检查TCP/IP协议、防火墙端口、SQL Server浏览器服务。
- 远程服务器连不上:除了以上内容,还要确认服务器身份验证模式是否允许SQL账号登录。
下面按照“服务→网络→认证”的顺序拆开讲。
第一步:确认SQL Server服务是否在运行
这是最常见的原因,电脑重启、系统更新、杀毒软件优化,都可能把SQL Server服务停掉。
操作路径如下:
- 按
Win + R,输入services.msc,回车。 - 在服务列表里找名字类似
SQL Server (MSSQLSERVER)的项。 - 如果是命名实例,名称会是
SQL Server (实例名)。 - 看“状态”一栏是否显示“正在运行”。
如果服务没跑起来,右键选择“启动”,如果启动时报错,先看“Windows事件查看器”里的“应用程序”日志,那里会写清楚失败原因,比如端口被占、文件损坏、账户权限不够等。
很多win10用户在系统更新后遇到sql server打不开的情况,多半就是服务被更新流程临时关闭后没有自动恢复。
第二步:检查实例名和服务器名称
连接窗口里的“服务器名称”不是随便填的,很多人把计算机名当实例名填进去,或者把默认实例和命名实例搞混。
- 默认实例:服务器名称可以直接填计算机名、
localhost、0.0.1或。 - 命名实例:必须写成
计算机名实例名或IP地址实例名,注意中间是反斜杠。
如果你不确定实例名,打开SQL Server配置管理器,左侧点“SQL Server服务”,右侧会列出所有实例,实例名就在括号里,比如SQL Server (SQLEXPRESS),连接时就要写你的电脑名SQLEXPRESS。
第三步:看错误号快速判断问题类型
SQL Server连接失败时会弹出一个错误框,里面有一串数字,这些数字不是乱码,能直接告诉你问题出在哪一层。
| 错误号 | 含义 | 优先排查点 |
|---|---|---|
| 2 | 找不到服务器 | 实例名、服务状态、SQL Server浏览器服务 |
| 40 | 无法打开到服务器的连接 | 网络协议、防火墙、端口 |
| 18456 | 登录失败 | 账号密码、身份验证模式、用户权限 |
| 233 | 连接被拒绝 | 端口不通或协议未启用 |
| 10060 | 连接超时 | 防火墙或网络路由 |
多数情况下,错误2和错误40占了大头,换句话说,你大概率还没走到登录那一步,网络层就已经断了。
数据库服务器连接失败解决方法:网络和端口排查
如果服务已经运行,实例名也没写错,但还是连不上,问题通常出在网络层,SQL Server默认通过TCP 1433端口通信,但这个端口经常被防火墙拦住。
TCP/IP协议被禁用的处理
SQL Server安装后,TCP/IP协议有时默认是关闭状态,尤其是Express版本。
处理方法:
- 打开
SQL Server配置管理器。 - 左侧展开“SQL Server网络配置”。
- 点击你的实例对应的协议。
- 右侧找到
TCP/IP,如果状态是“已禁用”,右键启用。 - 启用后,双击
TCP/IP,切到“IP地址”标签页。 - 拉到最下面,找到
IPAll,把“TCP端口”设为1433。 - 保存后回到“SQL Server服务”,右键你的实例,选择“重新启动”。
这一步做完后,本机连接一般就正常了,如果远程还是连不上,继续看防火墙。
防火墙拦截1433端口
Windows防火墙默认不会放行1433端口,即使SQL Server本身配置正确,外部电脑的请求也会被防火墙直接丢弃。
win10系统下允许1433端口通过防火墙的操作如下:
- 打开
控制面板→Windows Defender防火墙→高级设置。 - 点击左侧“入站规则”。
- 点击右侧“新建规则”。
- 选择“端口”,下一步。
- 选择“TCP”,在“特定本地端口”中填入
1433。 - 选择“允许连接”,下一步。
- 勾选“域”“专用”“公用”,下一步。
- 输入规则名称,比如
SQL Server 1433,完成。
如果SQL Server配置了动态端口或者使用了命名实例,防火墙只放开1433可能不够,这时候需要把SQL Server浏览器服务也放行,或者直接允许sqlservr.exe这个程序通过防火墙。
SQL Server浏览器服务未启动
命名实例默认使用动态端口,客户端连接时需要先问“SQL Server浏览器服务”要端口号,如果这个服务没启动,客户端就会报“找不到服务器”或错误2。
处理方法:
- 打开
services.msc。 - 找到
SQL Server Browser服务。 - 把启动类型改为“自动”,然后点击“启动”。
如果服务器在局域网内,且其他电脑需要通过实例名连接,这个服务必须保持运行。
sql server 登录失败怎么处理:认证和账号问题
网络通了,服务也正常,最后一步就是登录,走到这一步出现错误18456,说明账号密码没通过验证。
服务器身份验证模式设置错了
SQL Server有两种身份验证模式:
- Windows身份验证模式:只能用Windows系统账号登录。
- SQL Server和Windows身份验证模式:也就是混合模式,可以用
sa这类SQL账号登录。
如果你用的是sa账号,但服务器只开了Windows身份验证模式,登录会直接报18456错误。
修改方法:
- 打开
SQL Server Management Studio,用Windows身份验证方式先连上服务器(这一步一般不会失败)。 - 右键服务器实例,选择“属性”。
- 左侧点“安全性”。
- 在“服务器身份验证”下选择“SQL Server和Windows身份验证模式”。
- 点击确定,系统会提示需要重启服务。
重启SQL Server服务后,sa账号就能正常登录了,如果sa账号被禁用,需要手动启用,并重置密码。
sa账号被禁用或密码过期
有些服务器出于安全考虑,安装时没有启用sa账号,用sa连接时,报错信息只显示“登录失败”,不会提示是“被禁用”还是“密码错误”。
处理方法:
- 先用Windows身份验证连上服务器。
- 展开“安全性”→“登录名”。
- 右键
sa,选择“属性”。 - 在“状态”页里,确认“登录”设置为“已启用”。
- 如果密码不确定,可以在“常规”页重置密码。
- 取消勾选“强制密码过期”,避免后期又出问题。
局域网内其他电脑连不上本机sql server怎么办
这是典型的远程连接场景,除了上面提到的TCP/IP、防火墙、SQL Server浏览器服务,还要注意连接字符串里的服务器名称。
- 本机测试用
localhost没问题,不代表其他电脑也能用localhost连上。 - 其他电脑必须填服务器电脑的IP地址或计算机名。
- 如果用的是命名实例,格式为
168.1.100SQLEXPRESS。 - 注意实例名前面是反斜杠
,不是斜杠。
如果同网段内能ping通IP但数据库连不上,基本就是端口或协议的问题,打开命令提示符,输入telnet 服务器IP 1433,如果提示连接失败,就说明端口不通,回去检查防火墙。
用命令快速验证连接问题
不想来回点图形界面,也可以用命令行做几项快速检查,这些命令都是系统自带或SQL Server自带工具,结果直观。
用sqlcmd测试本地连接
打开命令提示符,输入:
sqlcmd -S localhost -U sa -P 你的密码
如果返回1>提示符,说明连接成功,如果报错,看错误号对应前面的表格。
用Windows身份验证测试:
sqlcmd -S localhost -E
这条命令使用当前Windows账号登录,适合验证服务是否正常响应。
用Test-NetConnection测端口
在PowerShell中输入:
Test-NetConnection 服务器IP -Port 1433
如果返回TcpTestSucceeded : True,说明端口通,如果是False,防火墙或网络设备肯定在拦截。
这个命令比telnet更好用,因为telnet在win10上默认没开启,需要单独安装,PowerShell的Test-NetConnection开箱即用。
行业共识:连接问题多数集中在服务与网络层
行业共识认为,SQL Server连接失败类问题中,服务未启动、TCP/IP协议未启用、防火墙拦截1433端口这三项占到了相当大比例,其余才是账号密码、实例名拼写、权限分配等问题,所以排查时不要一上来就重装,那样只会把配置越搞越乱。
近年来,随着云服务器和虚拟机使用增多,用户还需要注意云服务商的安全组规则,云主机的防火墙分为两层,一层是Windows系统内置防火墙,另一层是云平台的安全组策略,如果只放行了Windows防火墙,安全组没有开放1433端口,远程连接同样会失败。
Q&A
问:sql server 无法连接到服务器错误40怎么办?
错误40表示网络层无法建立到数据库服务器的连接,先确认SQL Server服务处于“正在运行”状态,再检查TCP/IP协议是否启用,以及防火墙是否放行1433端口,本地连接时把服务器名称改为再试一次,往往能快速定位是名称问题还是网络问题,如果远程连接,用Test-NetConnection 服务器IP -Port 1433测试端口,端口不通就检查防火墙和安全组。
问:sql数据库连接不上服务器怎么回事?
多数情况下是三个原因之一:SQL Server服务被停止、TCP/IP协议被禁用、防火墙拦截了1433端口,先检查服务状态,再启用TCP/IP并重启SQL Server服务,最后放行防火墙端口,如果报错18456,则属于账号密码或身份验证模式问题,需要改用Windows身份验证登录后修改服务器属性为混合模式。
问:数据库服务器连接失败解决方法有哪些?
按顺序执行以下步骤:第一,打开services.msc确认SQL Server服务正在运行;第二,在SQL Server配置管理器中启用TCP/IP并设置端口1433;第三,在Windows防火墙中添加入站规则允许1433端口;第四,如果是命名实例,确保SQL Server Browser服务已启动;第五,检查连接字符串中的实例名是否正确,本地用,远程用IP地址实例名,完成以上步骤后重新连接,多数场景下问题即可解决。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/670109.html





