ARTICLE DETAIL

资讯详情

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

SQL Server 本地安装与 SSMS 连接失败排查全攻略

SQL Server 本地安装与 SSMS 连接失败排查全攻略 装了一晚上 SQL ServerSSMS 打开后却死活连不上本地库这个场景我见过太多次了。朋友把安装向导每个界面的截图发我从头翻到尾才发现他把 SQL Server Management Studio 当成了 SQL Server 本体数据库引擎根本没装上去。这种事在 Windows10 本地装 SQL Server 的场景里太典型了——不是工具的问题而是大多数人只盯着下一步没想清楚安装和连接中间那几步的关系。这次我把整个流程从头捋一遍版本怎么选、安装时哪些配置会影响后面的连接、装完要做哪几件事才能连上、连不上了按什么顺序排查。适合刚接触 SQL Server 的初学者也适合那些按教程装完但就是连不上的倒霉蛋。文章里涉及的命令、配置、踩坑点都是我在 Windows10 本地实测过的照着做基本不会出幺蛾子。1. 装 SQL Server 前先把这个版本问题看清楚1.1 Developer、Express、Evaluation 到底选哪个首次在 Windows10 本地装 SQL Server卡在下载哪个版本这一步的人远超想象。很多人搜完一圈sqlserver 2019 下载sqlserver 2019 秘钥下载回来的安装包五花八门装完才发现要么功能残缺要么提示评估期到期。其实对本地开发来说选择很简单微软官方提供的 Developer 版本就是专门给开发人员用的完全不收费功能和企业版几乎一致只要不拿来做生产环境就行。我整理了一个表把三个本地场景最常用的版本放在一起对比版本费用核心功能主要限制适合场景Developer免费与 Enterprise 几乎一致仅限开发、测试不能用于生产个人开发学习、本地联调Express免费精简版单库最大 10GB无 SQL Server Agent 等轻量应用、嵌入式系统、入门练手Evaluation免费试用 180 天与 Enterprise 一致到期后必须卸载或迁移短期产品评估、临时环境这里必须说明一下网上找sqlserver 2019 秘钥完全没必要。Developer 版本安装时不需要输入任何产品密钥安装向导里直接选Developer就可以继续。如果你下载的安装包强制要求输入密钥且选项里没有 Developer说明你拿到的是特定付费版本的安装介质赶紧重新去官网下载别在这上面浪费时间。1.2 官网下载渠道和 Windows10 环境前置条件比较稳妥的下载路径是微软官方页面搜索SQL Server downloads for Windows就能找到带 DOWNLOAD 链接的入口。选择Download SQL Server 2022或Download SQL Server 2019时页面会要求你选择 Express、Developer、Evaluation 之类版本下载 Developer 版本即可。安装引导工具和 ISO 镜像都可以本地用在线安装引导工具更省事装完可以直接启动安装流程。动手之前我建议把 Windows10 环境本身收拾干净。装 SQL Server 对系统有几个隐性要求很多人不注意Windows10 必须是已激活状态。未激活系统上跑大型安装程序容易出现权限异常、组件注册失败虽然不绝对但没必要给自己埋雷。建议 64 位系统内存最低 4GB个人体感 8GB 以上才流畅。想想看SQL Server 本身就要占 1~2GB 内存加上 Windows 和浏览器低于 4GB 会非常痛苦。安装前先打完系统更新尤其是 .NET Framework 补丁。SQL Server 2019 和 2022 安装组件依赖 .NET Framework 4.6 以上系统太旧会自动装但常常卡在正在检查 .NET Framework这一步导致安装中断。如果机器上之前装过任何版本的 SQL Server或者卸载过但没清理干净建议先确认没有残留服务再开始否则后面服务名冲突和端口冲突能把人折腾疯。2. 安装向导里那几个决定成败的选项2.1 实例类型默认实例和命名实例的区别很多人第一次安装看到实例两个字就懵。这个概念不搞清楚后面连接时服务器名称就会填不对报错报得人莫名其妙。简单说SQL Server 允许一台机器上装多个独立实例实例名的作用就是区分它们。默认实例叫 MSSQLSERVER连接时服务器名称可以直接写 localhost、127.0.0.1 或计算机名命名实例则必须写计算机名\实例名比如DESKTOP-ABC123\SQLEXPRESS。Express 版在安装时默认勾选默认实例但也有人会选成命名实例装完之后以为自己连 localhost 就能通结果一直连不上。我建议初次安装一律选默认实例这样你在 SSMS 里填 localhost 就行心智负担最小后面看连接教程也能直接对上号。2.2 认证模式只选 Windows 认证的隐患安装向导走到服务器配置和数据库引擎配置时最容易忽略的就是认证模式。安装程序默认选中Windows 身份验证模式意思是只能用当前 Windows 账号以可信方式登录 SQL Server。这对初学者来说看着安全实际上给自己挖了一个大坑。为什么这么说因为一旦你后面用 Navicat、DBeaver、Python 代码、Java 代码这类外部工具连接时它们默认通过账号密码走 SQL Server 认证Windows 认证它们根本用不了。到时候要么回去改实例属性要么在 SSMS 里折腾账号非常麻烦。所以我的建议是直接选混合模式 (SQL Server 身份验证和 Windows 身份验证)然后设置 sa 用户的密码。记住这个密码不是摆设后面所有连接工具都要用它。还有人会问设置密码时提示不符合 Windows 密码策略怎么办这个最小长度和复杂性要求是 Windows 策略控制的本地的话设一个带大小写字母、数字、符号的密码就行别嫌麻烦。另外安装向导里的服务器配置页面默认把服务账户设置为 NT Service\MSSQLSERVER这个保持默认就行不要手贱改成普通 Windows 用户账户。曾经有朋友为了安全把服务账户改成自己的用户名重启后服务根本起不来连数据库报 17435 之类错误排查了半天。2.3 功能选择不要一股脑全勾选安装向导中间有一页功能选择默认已经勾了数据库引擎服务。有些人在网上看攻略说机器学习服务、全文搜索都要装其实本地开发完全没必要一上来全装。每个功能都意味着额外的时间和磁盘占用还有更多服务随开机启动。我的建议是最小化安装只勾选数据库引擎服务。分析服务、集成服务、机器学习服务等以后用到再补装。注意SQL Server Management Studio 不在功能列表里它是独立安装包别在这页翻来翻去找。另外实例配置页面里还有数据目录、日志目录和备份目录要注意路径不要带中文字符不要放到非系统盘根的深层目录。默认 C 盘路径虽然占空间但权限正确对新收手最不容易出问题。3. 装完不等于能连SSMS、服务端口的联动逻辑3.1 SSMS 在哪为什么安装包里找不到装完 SQL Server 本体之后不少人在开始菜单翻了一圈我的 SQL Server Management Studio 呢这个困惑我见过太多次了。SQL Server 从 2016 开始就把 SSMS 从安装介质里拆出去单独发布了。装 SQL Server 只是装了一个数据库服务程序它本身没有图形管理界面。要连它、建库建表、跑查询需要另外下载 SSMS。也就是说你的电脑上其实是两个独立的软件SQL Server服务器和 SSMS客户端。SSMS 下载同样在微软官网搜 Download SQL Server Management Studio (SSMS) 就能找到。版本建议装最新的 20.x 或 19.x不要装十几年前的 2008 版本去连 2019/2022连接协议和 TLS 版本都不匹配会报一些看起来完全莫名其妙的错误。3.2 连接界面上服务器名称填什么打开 SSMS第一屏连接到服务器就把很多人拦住了服务器名称填什么这里我给出一个速查表按你安装时的实例类型对号入座实例类型连接写法示例默认实例本机直连可用 localhost / 127.0.0.1 / .localhost默认实例显式指定默认端口 1433localhost,1433命名实例必须是 机器名\实例名DESKTOP-ABC123\SQLEXPRESS命名实例也可以 机器名\实例名,端口192.168.1.5\MSSQLSERVER,14333注意逗号是半角英文逗号。有些人从网页复制连接字符串复制过来变成中文逗号SSMS 就会一直转圈失败这种低级错误我排查过好几回。还有一个容易踩的坑远程桌面剪贴板重定向时反斜杠有时候也会被吃掉导致计算机名\实例名变成全角的或缺失字符。填完名称后身份验证方式选择SQL Server 身份验证输入 sa 和密码点击连接之前建议先点一下选项 - 连接属性把加密连接暂时勾选并信任服务器证书或者保持默认也行——本地纯 Windows 认证环境下一般不用管但如果系统策略强制要求加密这一栏不设置会对后续脚本连接造成干扰。3.3 用命令行验证服务是否真的在监听图形界面连不上时很多人直接卡死在 SSMS 的加载圈里。这时候我习惯先打开 CMD用系统自带工具验证底层的服务状态。先运行services.msc确认 SQL Server 服务有没有启动然后运行netstat -ano | findstr 1433如果看到TCP 0.0.0.0:1433 LISTENING这样的行说明数据库正在监听 1433 端口问题可能出在账号或协议上。如果这里什么都没有说明 TCP/IP 端口根本没开需要回到 SQL Server 配置管理器里检查协议配置。这个判断逻辑能帮你快速缩小问题范围不至于对着 SSMS 的报错干瞪眼。3.4 SQL Server Browser 服务在什么时候必须开还有一个服务叫 SQL Server Browser它在服务器名称解析里扮演中介角色。默认实例如果用固定 1433 端口它是不需要的但命名实例通常使用动态端口客户端要连上就必须通过 Browser 服务获取端口信息。所以如果你装了命名实例SSMS 连命名实例时反复失败先打开 services.msc 看 SQL Server Browser 服务是否启动安装后它默认是手动有些系统还是禁用。改成自动并启动能少踩很多不明不白的坑。4. 本地连接失败排查全链路4.1 先看看这些报错信息在告诉你什么连接失败时不管报什么错我建议别盯着错误全文死磕先按服务、协议、账号三层定位法缩小范围。错误信息里出现A network-related or instance-specific error occurred while establishing a connection to SQL Server后面跟着The network path was not found或Error: 26、Error: 40之类关键词优先怀疑服务没启动、实例名写错、TCP/IP 协议没启用。错误信息里出现Cannot open user default database通常和账号的默认数据库权限有关一般出现在安装了多个实例或迁移过库之后。错误信息里出现Login failed for user sa翻译成人话就是用户名或密码不对或者 sa 账号被禁用。错误信息里出现The target principal name is incorrect. Cannot generate SSPI context.通常是 SPN 和 Kerberos 问题本地场景可以把连接方式切换到SQL Server 身份验证来规避。4.2 第一刀服务有没有跑起来排查的第一步永远是最基础的SQL Server 服务有没有在运行。打开 WinR输入 services.msc回车按字母排序找到 SQL Server (MSSQLSERVER)命名实例显示为 SQL Server (实例名)。正常状态是正在运行如果停着或者启动类型不是自动都可能是问题。右键服务选择启动顺便把启动类型改成自动。这样以后重启电脑数据库不会莫名其妙连不上。检查完 SQL Server 服务再顺带看一眼 SQL Server Browser 服务的状态前面反复强调过命名实例靠它解析端口。4.3 第二刀协议和端口有没有放开数据库服务正常跑着还连不上下一个嫌疑就是协议。打开SQL Server 配置管理器它在开始菜单的 SQL Server 配置工具目录下。如果找不到说明安装时没选客户端工具连接或者权限不够需要以管理员身份打开。在SQL Server 网络配置 - 实例名的协议里能看到 Shared Memory、Named Pipes、TCP/IP 三个协议。有些安装组合下 TCP/IP 默认是禁用的我见过不下十次这种案例。我的建议是把 TCP/IP 和 Named Pipes 都启用然后双击 TCP/IP 进入属性切到IP 地址选项卡一路往下滚到IPAll。注意两个关键动作把TCP 动态端口下面的数字清空默认可能是 0表示动态端口。把TCP 端口填上 1433。保存后重启 SQL Server 服务。这一步做完本机和局域网连接都能走固定端口后续 Navicat、Spring Boot 连接时就可以直接写localhost:1433这样的地址。4.4 第三刀认证方式和 sa 密码到了这一步正常系统已经能连了如果还在报Login failed for user sa基本就是账号层的问题。两种情况比较常见安装时没启用 sa 账号或者 sa 密码输错。如果你能用 Windows 认证登录服务器名称填 localhost身份验证选Windows 身份验证进入 SSMS 后展开安全性 - 登录名 - sa右键属性常规里重设一个靠谱的密码状态里把启用勾上确认允许连接到数据库引擎是授予。搞定后用新密码重新登录。怕密码策略太麻烦本地开发你确实可以临时把 Windows 复杂性要求的策略改掉但改完会全局生效牵一发动全身一般我不推荐。更推荐老老实实用一个至少 8 位、含大小写字母和数字的密码然后存到密码管理工具里。4.5 容易被忽略的细节加密连接、ODBC 驱动和防火墙边界SQL Server 2019 之后的连接默认走加密通道这个变化让很多老项目踩了坑。明明密码没输错本地用 pyodbc 或 JDBC 连接时报 TLS 或证书错误。解决办法是让连接信任服务器证书连接字符串里加EncryptTrue;TrustServerCertificateTrue或者直接写EncryptFalse二选一。如果你不是用 SSMS而是用 Python、Java 等代码连接还要注意系统里装的 ODBC 驱动版本。SQL Server 2019/2022 的新特性要求较新的 ODBC 驱动使用老旧的 SQL Server Native Client 驱动连新版本可能直接失败。建议去微软官方下载 ODBC Driver 18 for SQL Server安装后驱动名变成{ODBC Driver 18 for SQL Server}。防火墙方面本机连接基本不受 Windows 防火墙影响但如果你想用局域网另一台机器连接就必须在防火墙入站规则里放行 1433 端口。还有一点Windows 自带高级防火墙如果开了默认阻止入站即使入站规则没配错也会连不上排查时可以临时关掉防火墙测试确认是防火墙导致的再精细化配置规则。但我提一句测试完记得开回来。5. 从 SSMS 走向更多连接工具5.1 Navicat 连接 SQL Server 的注意点本地环境通了以后工具支持就是最后一个环节。Navicat 是很多人的数据库管理利器连 SQL Server 时连接类型选SQL Server主机填 localhost端口填 1433用户名填 sa密码填安装时设的密码基本能一次连上。有朋友在 Navicat 里怎么都连不上但 SSMS 连得好好的这里绝大多数原因就是 TCP/IP 协议没启用或端口没固定。Navicat 不像 SSMS 的 Shared Memory 协议那样能绕开 TCP它默认是网络连接必须走 TCP。所以在配置管理器里把协议和端口准备好再回 Navicat 试。另外 Navicat 最新版对加密连接的默认设置也变了如果设置里没有显式关闭加密一样会遇到证书相关报错。5.2 DBeaver 连接 SQL Server 时驱动包的处理DBeaver 是开源免费的跨平台数据库工具也支持 SQL Server。第一次建连接时它会提示下载驱动包因为微软 JDBC 驱动比较大网络不好时可能下载超时。可以手动去微软 GitHub 仓库下载mssql-jdbc的 jar 包然后在 DBeaver 的数据库驱动 - SQL Server - 编辑 - 库里手动添加这个 jar。连接 URL 可以这样写jdbc:sqlserver://localhost:1433;databaseNamemaster;encryptfalse;trustServerCertificatetrue如果不想改连接 URL也可以在 DBeaver 连接设置里把驱动属性中的 encrypt 设为 false。记住新版 JDBC 驱动默认encrypttrue本地测试最好显式关掉加密或者开启信任证书否则第一次连就会报证书校验失败。5.3 Python、Spring Boot 连接方式速写写代码连接是本地数据库的核心用途之一。Python 最稳妥的方案是用 pyodbc 加 ODBC Driver 18示例import pyodbc conn pyodbc.connect( DRIVER{ODBC Driver 18 for SQL Server}; SERVERlocalhost; DATABASEmaster; UIDsa; PWD你的密码; TrustServerCertificateyes ) cursor conn.cursor()另一个常见库 pymssql 用起来更简单但底层依赖 FreeTDS新版 SQL Server 的加密协商偶尔会出问题遇到报错再换回 pyodbc 也不迟。Spring Boot 连接 SQL Server 也不复杂Maven 依赖加dependency groupIdcom.microsoft.sqlserver/groupId artifactIdmssql-jdbc/artifactId version12.8.1.jre8/version /dependencyapplication.yml 里spring: datasource: url: jdbc:sqlserver://localhost:1433;databaseNamemaster;encryptfalse;trustServerCertificatetrue username: sa password: 你的密码 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver这里有一个很容易忽略的点encryptfalse和trustServerCertificatetrue这两个参数在 SQL Server 2019/2022 上对连接成功率影响极大少了它可能永远卡在握手阶段日志里只显示 connection refused 或者 handshake failed。还有时区参数国内环境记得在 URL 后面加serverTimezoneAsia/Shanghai虽然新版驱动会自动识别但我见过不少 Java 老项目因为时区不对多出 8 小时的坑。最后分享一个我自己的习惯。每次装完 SQL Server我做的第一件事不是打开 SSMS 玩界面而是先确认四件事服务是否自启动、sa 是否启用、TCP/IP 是否固定到 1433、防火墙是否放行。这四件事确认完毕数据库才真正算安装完成。然后再去下载 SSMS、配 Navicat、写连接串每一步都有明确预期。按这套顺序走下来哪怕是第一次接触 SQL Server 的新手也能少走好几个晚上的弯路。
返回列表