十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SQL Server安装与连接失败排查:从版本选择到SSMS成功登录

SQL Server安装与连接失败排查:从版本选择到SSMS成功登录 装了SQL Server之后打开SSMS输入一个点号或者localhost结果弹出“无法连接到服务器”这是我在各个技术群里看到最多的新手问题。更麻烦的是很多人为了连上它反复卸载重装最后也没搞明白问题出在哪。其实SQL Server的安装和连接并不难难的是在安装阶段就顺手把后面连接要用到的配置一起想清楚。这篇博文我就把从下载安装到SSMS连上的完整链路走一遍重点讲网上教程一般不会细说的版本选择逻辑和连接失败排查路径让你看完能一次装对、一次连上。这篇文章适合刚入门SQL Server的开发者、学生也适合之前装过但没连上的“回炉”用户。我会以Windows环境下的SQL Server 2022为例同时把2019和2008 R2的差异点穿插进去通篇以实操为主必要的地方补充原理说明。1. 装之前先选对版本2022、2019还是2008 R2很多新手下载SQL Server时习惯直接搜最新版这本身没错但SQL Server的版本体系比一般软件复杂它同时存在“年份版本”“功能版本”“64位/32位”“中文版/英文版”等好几层概念。一旦第一层选错后面装得再顺利也会在正式使用时被迫重来。1.1 不同年份版本之间到底差什么SQL Server的命名方式是按年份来的比如2019、2022还有老古董2008 R2。年份版本决定的是数据库引擎的整体能力、安全机制、性能优化和部分SQL语法支持情况。我用一张表把几个关键差异列出来方便你判断版本支持的操作系统适合场景主要注意点SQL Server 2022Windows Server 2016 / Windows 10/11新项目、学习、云混合场景对硬件有一定要求至少4GB内存起步SQL Server 2019Windows Server 2016 / Windows 10/11存量项目、教程兼容很多老教程都基于它资料最多SQL Server 2008 R2Windows 7/Server 2008 R2及早期仅兼容老系统维护在Win10/11上装会遇到兼容问题不推荐新手从学习角度看我推荐直接上2022。它的安装流程和2019几乎一致但默认安全策略、性能工具等都更新你学完以后换到任何新环境都不至于断层。如果公司项目还在用2019那就装2019原则是“跟实际工作环境保持一致”。1.2 第一个容易踩的坑SSMS不是SQL Server我在指导别人安装时发现一个高频认知误区以为SQL Server Management StudioSSMS就是SQL Server本体。这俩完全是两回事——SQL Server是数据库引擎服务负责存储数据、处理查询SSMS只是一个图形化管理工具相当于数据库的“控制面板”。如果只装了SSMS而没装数据库引擎你会打开工具但连不上任何服务器然后陷入“重装SSMS—还是连不上—再重装”的死循环。所以记住下面这条链路数据库引擎SQL Server服务是核心SSMS只是连接它的客户端工具。两者必须分别下载安装且安装顺序没有强制要求但建议先装引擎再装SSMS。1.3 下载入口与版本授权简析SQL Server官网下载页面目前主要提供三种版本Express版免费功能受限最大数据库大小10GB左右适合学习和轻量应用。Developer版免费功能跟企业版一样但仅授权用于开发和测试不允许生产环境使用。这是学习首选。Standard/Enterprise版收费用于生产环境。如果你只是想学技术或者做个人项目不用犹豫直接选Developer版。它的下载包是一个ISO镜像文件大概2-3GB里面包含完整的安装程序。不过注意官网下载通常引导你进入Azure账户登录界面没有账户的注册一个就行下载本身不收费。2. 正式安装数据库引擎和那些容易被忽略的选项版本下载好之后双击ISO镜像挂载里面有一个setup.exe这才是真正的SQL Server安装引导程序。这里我强烈建议选择“自定义”安装类型不要用“基本”模式。2.1 为什么不用“基本”模式SQL Server安装引导首页通常给几个选项基本、自定义、下载媒体等。“基本”模式虽然只需要点几下但问题在于它会自动采用一套默认配置比如默认实例名、默认功能集、默认身份验证模式。这些默认值在学习环境勉强能用但在真实项目里几乎都要调整。更关键的是“基本”模式装完不会主动提示你设置sa账号密码而sa账号是后续用SQL Server身份验证连接时必须用到的超级管理员账号。为了后面不被折磨请选择“自定义”模式走完整配置。2.2 功能选择引擎必勾其他按需安装过程中有一个“功能选择”页面里面列出了数据库引擎服务、Analysis Services、Reporting Services、Integration Services、机器学习服务等一大堆功能。新手的思路应该是只勾选“数据库引擎服务”和它下面的子项。Analysis Services是分析型服务Reporting Services是报表服务Integration Services是数据集成服务这些属于扩展能力在没搞清需求前勾上只会拖慢安装速度、增加被攻击面。如果你以后要用SSIS做数据同步再回头安装也不迟SQL Server支持在安装完成后添加功能不必一上来全装。2.3 实例配置与实例名安装向导走到“实例配置”页面时会让你选择默认实例还是命名实例。默认实例实例名为MSSQLSERVER连接时直接填服务器名或IP就能访问不需要带实例名。命名实例比如SQL2022连接时必须写“计算机名\实例名”或“IP\实例名”。单机学习环境建议选默认实例因为连接字符串最简单。如果一台机器需要运行多个SQL Server版本才需要命名实例来区分。有一个细节值得留意实例名一旦确定后续修改很麻烦基本只能重装。所以安装时想清楚不要随手起一个以后自己都看不懂的名字。2.4 服务账户、身份验证模式和sa密码这是整个安装过程里最值得停下来仔细看的页面也是决定你能不能顺利连接SA的关键。首先看“服务账户”部分。SQL Server的各种服务默认使用NT Service\MSSQLSERVER这样的虚拟账号一般来说保持默认即可。除非你有跨域访问、共享文件夹这类需求否则不需要改成普通用户账户。接着看“身份验证模式”。这里有两个选项Windows身份验证模式只允许Windows用户登录。混合模式同时允许Windows用户和SQL Server用户登录。我建议直接选择“混合模式”然后在下方设置sa账号的密码。sa是SQL Server内置的超级管理员很多老旧系统甚至生产系统都喜欢用它来连接数据库。密码设成强密码至少10位包含大小写和数字特殊字符的组合别用123456之类因为服务器暴露到公网后sa就是暴力破解的头号目标。如果你只想先学Windows身份验证也可以选“Windows身份验证模式”但以后要切换到混合模式必须重新改配置并重启服务。与其来回折腾不如安装时就直接设好混合模式和sa密码。2.5 安装到最后卡住时的处理经验安装过程一般10到20分钟中途可能出现两种卡住情况一是提示“需要重启计算机”。这是因为系统有挂起的文件操作微软很多软件安装前都会检查这个。处理方法有两种先去“控制面板-程序和功能”看是否有挂起重启标记或者直接在注册表里删掉PendingFileRenameOperations项删除前建议先备份注册表不熟悉的话就重启电脑再装。二是在“Install_DatabaseEngine”阶段长时间无响应。这个多半是Windows Installer或.NET Framework环境异常。可以打开“事件查看器”看Windows日志里有没有报错定位到具体模块后针对性处理。最常见的解决办法是安装最新的.NET Framework和Windows更新再重新运行安装程序。3. SSMS下载安装与第一次建立连接服务器装好之后桌面不会自动出现SSMS图标——因为微软从SQL Server 2016开始就把SSMS从安装介质中独立出来了。你需要专门去下载SSMS安装包这一步很容易被忽略。3.1 SSMS版本与SQL Server版本的对应关系SSMS现在已经迭代到20.x它向下兼容可以连接SQL Server 2019、2022甚至更早的版本。官网的SSMS下载页会直接提供最新版本你不需要像搜索引擎里那些文章写的那样去翻历史版本。只有一种情况需要注意版本如果你用的是Windows 7或更老的操作系统新版SSMS可能装不上那时候才需要考虑老版本SSMS 18.x。在Windows 10/11上直接装最新版就好。网上常有人问“sql server 2022用什么版本的ssms”答案很简单装最新版SSMS即可没有特殊限制。3.2 安装SSMS时的注意事项SSMS安装包是一个几百MB的可执行文件双击后走一遍安装向导。这一步没有太多需要配置的地方但有几个细节值得提醒安装路径建议保持默认SSMS会装到Program Files (x86)下改路径可能影响后续自动更新。安装过程中会提示“关闭Visual Studio相关进程”如果你开着VS记得先关掉否则要重启再继续。装完以后可能需要重启系统这是正常行为不是装坏了。3.3 第一次连接服务器名称到底填什么打开SSMS后第一眼看到的就是“连接到服务器”对话框。很多新手在这里就卡住了不知道该填什么。根据你的实例类型服务器名称有几种填法默认实例填一个点.、localhost、(local)或者计算机名都行它们都指向本机默认实例。命名实例必须填计算机名\实例名比如DESKTOP-ABC123\SQL2022。远程连接填IP地址或IP地址\实例名比如192.168.1.100或192.168.1.100\SQL2022。首次学习用本机默认实例的话填一个点.是最省事的。我第一次教别人时发现很多人不填点而是填“服务器名”三个字把它当成提示文字了结果当然连不上。身份验证模式这里暂时选“Windows身份验证”点击连接。如果之前设置的混合模式没生效而你的Windows登录账号又不是sysadmin角色可能会遇到18456错误这个问题放到下一章讲。3.4 为什么推荐先用Windows身份验证登录安装时我们设置了sa密码理论上可以直接用SQL Server身份验证登录。但我还是建议第一次连接先用Windows身份验证原因有两个。第一Windows身份验证不需要输入账号密码能最快验证“引擎服务是否正常”这件事。如果Windows身份验证能进去而SQL Server身份验证进不去那问题大概率出在登录名、密码或权限配置上跟服务本身无关。第二刚装完SQL Server时并不是所有Windows账号都有管理员权限。安装过程会把运行安装程序的Windows账号自动加入sysadmin固定服务器角色所以用这个账号登录必然有最高权限方便你后续检查配置。4. 连接失败的典型错误定位从服务、协议到防火墙这一步是整篇文章的重头戏。我在各种社区里见过最多的求助帖就是“SQL Server连接失败错误代码40/26/18456”下面逐一拆解。4.1 分清错误代码的排查方向SSMS连接失败时会弹出一个错误对话框里面往往写着类似“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误”这样的文字。新手通常直接被这段话吓住但其实关键在后面的错误号错误号含义排查方向Error 40无法打开到SQL Server的连接网络不通、实例名不对、SQL Server服务没启动Error 26查找指定的服务器/实例时出错服务未启动、TCP/IP协议未启用、Instancename写错Error 18456用户登录失败身份验证模式、密码错误、登录名未启用Error 40和Error 26经常是同一个根因在不同阶段的表现核心都是“客户端没能触达SQL Server服务端”。这里有一个需要强调的常识SSMS在连接时不是直接发请求而是先去找SQL Server的服务监听端口默认1433找到以后才建立连接。如果服务端没在监听或者监听的协议不对就会出现上面两个错误。4.2 确认SQL Server服务真的在运行最基础的排查永远是从服务开始。按下WinR输入services.msc找到下面这些服务SQL Server (MSSQLSERVER)数据库引擎核心服务对应的显示状态应该是“正在运行”。SQL Server Agent (MSSQLSERVER)定时任务、作业调度服务默认停止不影响连接。SQL Server Browser启用命名实例时需要用这个服务去执行端口发现默认实例不依赖它。如果“SQL Server (MSSQLSERVER)”没有运行右键启动即可。启动失败时右键属性查看“登录”选项卡确认内置账户设置没问题或者检查系统事件日志里有没有服务崩溃的详细记录。这个排查步骤往往被新手跳过因为他们默认“装好了服务就会一直跑”。实际上计算机开机后SQL Server默认自动启动但系统优化软件、安全策略、异常关机都可能把它停掉。4.3 TCP/IP协议没启用一个非常常见的问题SQL Server默认同时启用Shared Memory、Named Pipes、TCP/IP三种协议。Shared Memory只支持本机进程内通信Named Pipes在跨网络场景性能差真正用于局域网连接的是TCP/IP。如果TCP/IP被禁用你本地用SSMS填local可能还能进因为Shared Memory还能用但局域网里的其他电脑就连不上远程连接更是彻底无望。启用方法如下在开始菜单搜索“SQL Server 2022配置管理器”找到SQL Server网络配置。点击“MSSQLSERVER的协议”右侧会列出Shared Memory、Named Pipes、TCP/IP。右键TCP/IP选择“启用”。在TCP/IP属性中切到“IP地址”选项卡检查是否监听1433端口。拉到最下面的“IPAll”确认TCP端口是1433。修改完必须重启SQL Server服务配置才生效。很多教程到这里就结束了但我要额外说一句如果你需要远程连接不要只启用TCP/IP就完事还要在防火墙里放行1433端口见下一节。4.4 防火墙、远程连接设置与常见误区Windows防火墙默认会拦截外部对SQL Server的访问。即使SQL Server安装程序在安装时自动添加了入站规则某些精简系统或第三方安全软件仍可能屏蔽它。推荐做法是手动创建入站规则打开“Windows安全中心-防火墙和网络保护-高级设置”。选择“入站规则-新建规则”。规则类型选“端口”。协议选TCP端口填1433。操作选“允许连接”。应用范围按需选择如果只在局域网用“公用”网络可以不开。同时还需要确认SQL Server实例是否允许远程连接。进入SSMS后右键服务器选择“属性”在“连接”页勾选“允许远程连接到此服务器”。这个选项默认是开启的但如果安装时用了某些优化脚本可能被关掉。4.5 登录失败18456的排查顺序当你跨过了网络这一关终于看到SSMS弹出一个“用户’sa’登录失败”的时候恭喜你问题从网络层转到了认证层。18456错误后面通常会跟一个状态码不同状态码对应不同原因状态8密码不匹配。状态1信息不可用需要进一步查日志。状态2用户ID无效。排查链路先用Windows身份验证登录SSMS右键sa账号检查属性。确认登录名是否被禁用。有些安装默认禁用sa右键sa选择“启用”。确认密码是否与安装时设置的一致。不确定时可以直接在属性里重设一个新密码注意强密码策略。确认服务器属性里的身份验证模式是“混合模式”。如果是Windows身份验证模式sa无论如何都登不进去需要改注册表或SQL Server配置管理器改完重启服务。补充一个高频坑很多人修改了密码或身份验证模式后没有重启SQL Server服务导致配置不生效。任何服务端配置修改都别忘了重启对应服务。5. 装完别急着写代码把环境和连接串一起理清楚成功用SSMS连接上之后你的安装任务基本完成了但距离“能放心写项目”还有一步把连接方式、连接串和日常维护命令都梳理清楚。这一章我会带着你做一次最小验证再补充连接池和远程连接的背景知识。5.1 用SSMS完成一次最小验证连接成功后在左侧“对象资源管理器”中展开“数据库”右键“新建数据库”输入一个名称比如TestDB点击确定。这能验证是否具备建库权限。接下来展开新数据库下的“表”右键“新建”选择“表”添加两列比如ID和Name保存时会给表起名。然后右键表选择“编辑前200行”或“选择前1000行”尝试插入一条数据。这一套动作做下来说明从建库到DML操作都通了。如果在这里报权限错误说明当前登录账号不是sysadmin角色可以用安装时的Windows管理员账号登录确认权限或者用sa账号检查。5.2 理解连接串本地和远程的区别日常开发中你不可能每次都打开SSMS操作数据更多时候是在代码里写连接字符串。最基础的SQL Server连接串长这样Serverlocalhost;DatabaseTestDB;User Idsa;Password你的密码;TrustServerCertificateTrue;几个关键参数解释一下Server本机填.或localhost远程填IP或IP\实例名。Database默认连接的数据库不填默认是master。TrustServerCertificate新版驱动默认要求加密连接开发环境设True省去证书验证烦恼。Encrypt可设为Optional或Mandatory开发用Optional更省事。如果采用Windows身份验证连接串不写User Id和Password加上Integrated SecurityTrue即可。不同开发语言对连接串格式略有差异但基本字段就是这些。5.3 从连接池角度看“长连接与短连接”的争议平时上网搜SQL Server相关内容经常能看到“tcp长连接与短连接”“http连接复用”这些词冒出来。很多人误以为数据库连接也有“长/短”之分需要手动切换。实际上ADO.NET等数据访问框架默认启用了连接池机制代码里每次Open()看似建立新连接底层却在复用连接池中空闲的物理连接关闭连接不是真断开而是归还池子。这个机制自动实现了“长连接复用”你不需要手动去写保活逻辑。真正需要关心的只有一点连接串中不要乱加PoolingFalse否则每次Open都会重新握手验证并发一大性能立刻雪崩。把连接池机制理解为“复用TCP长连接、避免频繁短连接”的自动管理方案就不容易踩坑了。5.4 安装完成后的环境加固建议连接没问题之后有两件小事建议新手别拖给sa设置强密码并考虑创建专门的应用程序账号而不是让业务代码全程用sa。把SSMS的“选项-查询执行-SQL Server-高级”中“SET NOCOUNT”保持默认不要手动勾选一堆奇怪的执行选项。另外如果你用的是Developer版注意授权限制它只供开发和测试使用不能拿来跑正式业务。这是我见过最多人栽跟头的地方——有些小公司图省事用Developer版上线后来被微软查授权时非常被动。最后分享一个踩坑很久才明白的小技巧如果上面所有排查都做完了还是连不上建议在SSMS的“连接到服务器”对话框里点击“选项”在“连接属性”页把“加密连接”关掉试试。新版SSMS默认会对连接进行加密而老版本SQL Server 2008 R2的证书配置不完善会直接导致“证书链是由不受信任的颁发机构颁发的”这个报错。我在实际帮助别人排查时替他们解决了这个问题。排查手段也很简单先用命令行工具sqlcmd -S localhost -E测试引擎连接如果命令行能连上而SSMS连不上问题几乎都出在SSMS的加密和证书选项上。SQL Server的安装和连接就是一个环环相扣的过程版本选对、引擎装好、SSMS独立下载、实例名写对、协议开启、端口放行、认证模式正确缺一环都可能卡住。按文章里的顺序走一遍你会发现数据库连接并没有想象中那么玄乎。
返回列表