ARTICLE DETAIL

资讯详情

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

SQL Server 2022 安装、SSMS 配置与连接排查指南

SQL Server 2022 安装、SSMS 配置与连接排查指南 上个月帮朋友的公司搭测试环境运维那边发过来的需求文档就一行字装个 SQL Server 2022再顺手给开发把 SSMS 配上。听起来是个半小时的活真动手的时候从版本选择卡到远程连接前后折腾了小半天。这篇就把我这些年反复装 SQL Server 2022 加 SSMS 的完整流程写一遍重点不在截图而在每一步为什么这么选、哪个页面最容易点错、装完连不上按什么顺序排查。适合第一次独立装数据库引擎的运维新人也适合想给团队搭一套规范测试环境的老手拿来对照检查。先把结论摆在这儿SQL Server 2022 的安装本身并不难难的是三个地方——版本和授权没想清楚导致返工、安装向导里几个关键页面的默认值不适合生产、装完之后 SSMS 装错版本或者远程连不上。这三个坑我全踩过下面挨个拆。1. 动手之前必须先定下来的三件事1.1 Developer 版和 Standard、Enterprise 到底差在哪很多人一上来就去搜SQL Server 2022 哪个版本好其实这个问题没有标准答案取决于你装它干什么。我把几个常见版本的边界整理成了一张表你自己对号入座。版本内存与核心上限典型使用场景是否收费Express缓冲池 1410MB单库 10GB取 4 核或 1 插槽的较小值小型应用、学习练手、桌面软件内置库免费Developer与 Enterprise 功能完全一致开发、测试、性能调优、学习免费但禁止用于生产Standard缓冲池 128GB取 24 核或 4 插槽的较小值中小型业务系统、内部管理系统收费Enterprise无上述硬性上限核心业务、数据仓库、高可用集群收费这里有个特别容易被忽略的点Developer 版的功能集和 Enterprise 是一模一样的包括分区表、列存储索引、Always On 可用性组、内存优化表这些高级特性全都开放。所以如果你是在自己电脑或者公司测试机上练手、做选型验证直接上 Developer 版就行了没有任何理由去找别的版本。Express 版我一般只推荐给两种情况一是单机小工具确实只需要存几百兆数据二是给别人做演示用的临时环境。它的 10GB 单库上限和 1410MB 缓冲池上限在稍微正经一点的业务里很快就会撞墙到时候迁移又要折腾一遍。我个人经验是测试环境一律 Developer宁可多花点磁盘空间也别给自己埋一个数据量涨上来了要换版本的雷。1.2 关于激活密钥这件事把话说透网上关于 SQL Server 2022 的搜索词里密钥相关的词热度一直很高。我把这件事讲清楚省得有人走弯路。SQL Server 是通过授权模式来管理的主要分两种服务器加客户端访问许可Server CAL和核心授权Core-based。你从正规渠道采购后会拿到授权信息企业内部通常还有批量授权的管理后台。来源不明的密钥一方面随时可能失效导致服务被降级甚至停止另一方面这类文件的来源完全不可控对一台承载业务数据的服务器来说是不可接受的风险。我的做法很简单开发测试环境用 Developer 版它本身就免费且功能齐全生产环境走公司正规采购流程让商务去处理授权。安装向导里那个输入产品密钥的页面Developer 版是可以直接跳过的评估期也有 180 天足够你把选型验证做完。真的不要在服务器上装来路不明的东西这个底线一旦破了后面出什么问题都说不清楚。1.3 磁盘、内存和 tempdb 的提前规划这一节是纯经验跳过它你可能省十分钟但后面可能要花两天。先说磁盘。不要把数据文件、日志文件和备份放在同一个卷上尤其是不要放在 C 盘。原因不复杂日志是顺序写数据文件是随机读写备份是持续的大块顺序写三者放在一起会互相抢 IO。我的常规做法是拆四个目录数据目录D:\MSSQL\Data日志目录E:\MSSQL\Logtempdb 目录F:\MSSQL\TempDB备份目录G:\MSSQL\Backup条件不够就放到网络存储如果服务器只有一块盘那就至少把备份目录放到别的物理设备上这是底线中的底线。NTFS 格式化的时候分配单元大小建议设成 64KB对大文件的顺序读写更友好。再说内存。SQL Server 默认会尽可能吃满操作系统内存所以装机之后第一件事就是设最大服务器内存这个后面第 6 节详细说。规划阶段你要保证留给操作系统的内存至少 4GB剩下的才能给数据库。最后是 tempdb。SQL Server 2022 的安装向导里已经可以直接配置 tempdb 文件数量了这是个很实用的改进。文件数量的经验规则是逻辑 CPU 数小于等于 8 时文件数等于逻辑 CPU 数大于 8 时先建 8 个后续如果还有争用再按 4 的倍数往上加。每个文件的大小设成一样开启自动增长增长量固定一个绝对值而不是按百分比——按百分比增长会在文件变大的时候一次增长几个 GB卡顿非常明显。2. 安装介质的准备在线装还是做离线包2.1 安装中心的两个入口别选错从官方渠道拿到安装程序之后双击运行会进入 SQL Server 安装中心。左侧有一列选项第一次装的人最容易迷糊的是全新 SQL Server 独立安装或向现有安装添加功能和从介质下载这两个。全新独立安装适合这台服务器能直接访问外网安装程序会边装边下载需要的组件。从介质下载适合内网服务器先在能上网的机器上把完整介质拉下来再拷进去。我现在的习惯是无条件走第二条路。原因是生产服务器几乎都不允许直接访问外网而且在能上网的机器上一次性下载完整介质速度稳定、可校验、可复用装第二台机器的时候直接拿同一个包省事得多。2.2 离线安装包的制作与校验下载介质的页面里安装程序会让你选下载类型选 ISO 或者直接下载到文件夹都行。ISO 的好处是便于归档和校验缺点是得挂载文件夹的好处是直接就能用。我一般下 ISO然后用哈希校验工具对一下官方公布的 SHA256确认文件完整。介质大概 1.5GB 左右解压后你会看到一个setup.exe。这里提醒一句不要从压缩包里直接双击 setup.exe 运行一定要先完整解压到本地磁盘。我遇到过一次从压缩软件里直接运行安装中途报找不到某个 .cab 文件的错误排查了半小时才发现是解压不完整的问题。2.3 装之前的环境自检清单在真正点安装之前把这几个项目过一遍能省掉大部分中途失败操作系统版本SQL Server 2022 要求 Windows Server 2016 及以上或者 Windows 10/11 的较新版本。.NET Framework这是最常见的缺失项安装程序会检测缺了会弹出下载入口。建议提前装好并重启。磁盘空间完整安装加上临时文件准备 10GB 以上比较稳妥。防火墙预规划默认实例的 TCP 端口 1433命名实例如果用动态端口需要额外处理这些后面第 5 节展开。关闭杀毒软件的实时扫描至少在安装过程中临时关闭对C:\Program Files\Microsoft SQL Server目录做排除。这一点经常被忽略出问题时的表现是安装进度卡在某个百分比不动或者报文件被占用。自检做完挂载 ISO以管理员身份运行setup.exe才算正式开始。3. 逐屏拆解安装向导每个页面的坑在哪3.1 功能选择页该勾的别漏不该勾的别贪向导走到功能选择这一页你会看到一棵长长的功能树。我的建议是只装你确实要用的装多了不只是占空间还会多出几个需要单独打补丁、单独配安全的服务。下面是我常用的勾法数据库引擎服务必装这是核心。复制如果业务上有数据分发需求就勾上用不到可以不勾。全文和语义提取搜索需要做全文检索才勾一般业务系统用不到。机器学习服务和语言扩展除非明确要在数据库里跑 R 或 Python否则不勾。客户端工具向后兼容性建议勾某些老工具依赖这部分组件。SQL Server 复制相关组件跟着复制一起勾。这里要专门说一件事很多教程会让你在这一页找 SSMS 然后勾上但 SQL Server 2016 之后 SSMS 就不再随安装介质一起提供了它变成了一个独立下载、独立更新的工具。所以在这一页你找不到它别浪费时间。SSMS 的部分我在第 4 节单独讲。另外记得改一下共享功能目录和实例根目录默认都在 C 盘如果你按第 1 节的规划分了盘在这里就把路径改过去。这一步改错了后面只能卸载重装因为数据文件的默认路径虽然可以改但程序目录和系统库的位置是跟着实例走的。3.2 实例配置默认实例还是命名实例实例配置页有两个选项默认实例和命名实例。默认实例服务名是MSSQLSERVER客户端连接时只写主机名或者 IP 就行比如192.168.1.10。命名实例服务名是MSSQL$你的实例名客户端连接时必须写192.168.1.10\你的实例名。如果这台服务器只跑一个 SQL Server毫无疑问用默认实例客户端配置最简单端口也是标准的 1433。如果要在同一台机器上装多个实例比如一个跑正式库一个跑测试库那就用命名实例区分。命名实例有个隐藏的麻烦默认使用动态端口也就是说它每次重启可能会换一个端口客户端如果没有开 SQL Browser 服务就找不到它。解决办法有两个要么把命名实例的端口固定下来要么保持 SQL Browser 服务运行。从安全角度我推荐前者固定端口之后把 SQL Browser 关掉减少一个暴露面。同一页往下走是排序规则。这个我要重点提醒排序规则装完之后修改非常麻烦需要重建系统数据库基本等同于重装。中文业务系统我一般用Chinese_PRC_CI_AS也就是不区分大小写、区分重音。如果你们的开发规范里已经定了别的排序规则一定要在这里统一否则后面跨库做字符串比较会报排序规则冲突处理起来很头疼。3.3 服务账户、身份验证模式和目录配置安装向导中间有连续几页是关于服务账户和目录的我合并起来说。服务账户这一页会给数据库引擎服务和 SQL Server 代理服务各分配一个账户。默认的虚拟账户比如NT Service\MSSQLSERVER在单机环境下完全够用权限最小化也不需要你管理密码。如果是域环境且有统一的服务账户规范那就按规范来。这里要注意的是你输入的账户必须已经具备作为服务登录的权限安装程序一般会自动授予但如果用的是受限的域账户可能会被组策略挡住报权限相关的错误。目录配置这一页分别指定数据根目录、用户数据库目录、用户数据库日志目录、tempdb 目录、tempdb 日志目录和备份目录。按第 1 节的规划填就行。tempdb 的目录建议单独放因为它重启会重建写在独立的卷上能减少和用户库的 IO 争抢。身份验证模式这一页是整个安装里最关键的决策点Windows 身份验证模式只能使用 Windows 账户登录安全性最好但开发同事用第三方工具连的时候会不太方便。混合模式同时支持 Windows 身份验证和 SQL Server 登录。绝大多数场景我选混合模式然后立刻设置一个强密码的 sa 账户再单独为每个应用建独立的登录名应用绝对不要直接用 sa。sa 只作为应急入口平时把它的已启用状态关掉也行需要的时候再打开。同一页下方是指定 SQL Server 管理员这里一定要把你自己的域账户或者当前管理员账户加进去否则会出现一种非常尴尬的情况装完了用任何账户都连不上只能进单用户模式抢救。3.4 装完之后的验证动作点击安装之后向导会跑一长串步骤最后给出一个完成页面上面有个链接指向摘要日志。日志默认在C:\Program Files\Microsoft SQL Server\160\Setup Bootstrap\Log\下面有Summary.txt和带时间戳的详细日志目录。只要有任何一步是失败或者警告状态先去翻 Summary.txt它会把失败原因直接写出来比在向导界面上猜快得多。装完之后做三个验证第一个打开服务管理器确认SQL Server (MSSQLSERVER)和SQL Server 代理都处于运行状态启动类型设为自动。第二个在服务器本机用命令行工具连一下sqlcmd -S localhost -E -Q SELECT VERSION;-E表示用 Windows 身份验证。能返回版本号说明引擎本身是好的。第三个确认版本号符合预期SELECT SERVERPROPERTY(ProductVersion) AS 版本号, SERVERPROPERTY(Edition) AS 版本, SERVERPROPERTY(ProductLevel) AS 补丁级别;ProductVersion以 16 开头就是 SQL Server 2022ProductLevel显示 RTM 说明还没打累积更新这个后面第 6 节说。顺便分享一个小技巧手动装完一台之后安装目录下会生成一个ConfigurationFile.ini。把这个文件保存好下次装第二台机器的时候用setup.exe /ConfigurationFile路径就能把大部分选项自动填好只需要改改实例名和路径效率提升非常明显。如果要做全静默安装命令大概长这样setup.exe /Q /ACTIONInstall /FEATURESSQLENGINE ^ /INSTANCENAMEMSSQLSERVER ^ /SQLSVCACCOUNTNT AUTHORITY\NETWORK SERVICE ^ /SQLSYSADMINACCOUNTSBUILTIN\Administrators ^ /AGTSVCACCOUNTNT AUTHORITY\NETWORK SERVICE ^ /SECURITYMODESQL /SAPWD换成你自己的强密码 ^ /SQLCOLLATIONChinese_PRC_CI_AS ^ /SQLUSERDBDIRD:\MSSQL\Data /SQLUSERDBLOGDIRE:\MSSQL\Log ^ /TCPENABLED1 /IACCEPTSQLSERVERLICENSETERMS注意最后那个/IACCEPTSQLSERVERLICENSETERMS参数静默安装时不加这个会直接退出报未接受许可条款很多人第一次写静默脚本都会漏掉它。4. SSMS 的下载、安装与版本选择4.1 为什么 SSMS 要单独装前面提过从 SQL Server 2016 开始SSMS 就脱离数据库引擎的发布节奏了变成了一个独立产品有自己的版本号和更新周期。这个变化对使用者来说其实是好事你可以随时升级管理工具而不用动数据库服务器本身。但这也带来一个常见的困惑安装完 SQL Server 2022 之后服务器上其实什么图形化管理工具都没有你必须再去单独下载 SSMS或者用命令行工具 sqlcmd。很多第一次装的人到这一步会以为安装失败了其实是正常的。4.2 到底该装哪个版本的 SSMSSSMS 的版本和 SQL Server 的版本不是一一对应的一个 SSMS 可以管理多个版本的 SQL Server 实例。但版本选择上还是有讲究的SSMS 19.x兼容性最稳对 Windows 版本要求相对宽松管理的实例范围也比较广从比较老的版本到 2022 都能覆盖。SSMS 20.x 及以后界面更新对新特性支持更完整但对操作系统和运行时组件的要求更高某些版本需要预先安装较新的 .NET 运行时。我的选择逻辑是这样的如果这台机器只用来管理 SQL Server 2022 及以后的实例那就装最新的稳定版能用上新功能如果同时还要管理 SQL Server 2012 甚至 2008 这类老实例我倾向于选一个兼容范围更宽的版本避免遇到某些老实例的功能在管理工具里不可用。至于运行 SSMS 的机器我强烈建议装在开发或运维自己的电脑上而不是装在数据库服务器上。数据库服务器上应该尽量少装东西管理工具装在服务器上既占资源又增加安全面。测试环境里如果非要在服务器上装一个用于应急那就装但生产服务器我不建议这么做。4.3 装完 SSMS 后的第一件事SSMS 装好之后打开是一个连接对话框。这里几个字段的填法服务器类型选数据库引擎。服务器名称如果是本机默认实例填.或者localhost或者127.0.0.1如果是远程默认实例填 IP 或主机名如果是命名实例填IP\实例名比如192.168.1.10\DEVINST。身份验证日常用 Windows 身份验证就行如果你的 Windows 账户在服务器上没有登录名就切到 SQL Server 身份验证。连上之后有几个设置我每次都会先调第一个是查询编辑器的默认行为。在工具 → 选项 → 查询执行里把结果输出方式设成结果到网格这个是默认的但要把执行后放弃结果关掉否则大结果集会被截断。第二个是常用快捷键。CtrlR显示或隐藏结果窗格CtrlShiftR刷新 IntelliSense 缓存。后者特别有用——你新建了一个表但查询编辑器里提示不出来八成是缓存没刷新。第三个是已注册服务器。如果你要管理多台服务器用视图 → 已注册服务器把常用连接存下来还能按文件夹分组比每次手填连接信息高效得多。第四个是查询执行超时。默认值在某些慢查询上会直接报超时如果你们的库有大表统计可以适当调大。5. 第一次连接就失败的排查链路5.1 报错本身怎么读连接失败的时候SSMS 会弹出一个编号加描述的错误。这个编号很关键它直接告诉你问题出现在哪一层错误编号含义大概率原因2 或 53找不到网络路径或实例主机名写错、网络不通、实例名拼错26 或 40定位到服务器但无法建立连接TCP/IP 协议未启用、端口未监听10060连接超时防火墙拦截、端口不通10061目标主动拒绝连接服务没启动、端口没在监听18456登录失败账户、密码、验证模式、默认库的问题报 18456 的时候错误信息里其实还有一个状态数字这个数字信息量极大状态 5 一般表示这个登录名在服务器上不存在状态 7 通常是登录名存在但密码不对而且已启用混合验证状态 8 是密码错误状态 11 和 12 常见于 Windows 验证通过了但 SQL 层面拒绝或者默认数据库不可用状态 18 是密码过期。同一个报错配不同状态码排查方向完全不同所以看到 18456 一定要往下看状态数字。5.2 协议没启用本地连不上最常见的根因如果你在服务器本机用localhost都连不上先去看 SQL Server 配置管理器。这个工具在开始菜单里能搜到或者在C:\Windows\SysWOW64\SQLServerManager16.msc这类路径下。打开之后依次展开SQL Server 网络配置 → 实例名 的协议你会看到 Shared Memory、Named Pipes、TCP/IP 三个协议。TCP/IP 默认是禁用状态这是很多人踩的第一个坑。启用它然后双击进入属性切到IP 地址选项卡拉到最底下有一块IPAll把TCP 端口设成 1433把TCP 动态端口清空。改完之后必须重启 SQL Server 服务才生效这一步很多人会忘改完不重启然后接着排查浪费时间。5.3 远程连不上防火墙和浏览器服务本地通了远程不通问题基本在网络层。按这个顺序查第一步在服务器上确认端口确实在监听。打开命令提示符netstat -ano | findstr :1433有 LISTENING 状态的记录说明引擎已经在监听 1433 了。第二步检查防火墙入站规则。给 1433 端口加一条入站允许规则。如果需要同时支持 IPv6把对应的协议也加上。第三步如果用的是命名实例且没固定端口客户端需要靠 SQL Browser 服务来定位端口这时候要确保 UDP 1434 是通的并且 SQL Browser 服务在运行。前面说过我的建议是把命名实例的端口固定住然后关掉 SQL Browser这样既省事又少一个攻击面。第四步站在客户端机器上测连通性。用telnet 服务器IP 1433或者 PowerShell 的Test-NetConnection命令。如果这一步就不通那问题一定在服务端防火墙或者中间的网络安全策略上跟 SQL Server 本身没关系了。5.4 混合验证模式没生效的坑有一种情况特别容易迷惑人装的时候明明选了混合模式也设了 sa 密码但就是登录不进去。原因通常是安装时选的其实是 Windows 验证模式或者 sa 账户虽然存在但被禁用了。判断方法很简单先用 Windows 身份验证连进去然后执行SELECT name, is_disabled FROM sys.server_principals WHERE name sa;如果is_disabled是 1把它启用ALTER LOGIN sa ENABLE; ALTER LOGIN sa WITH PASSWORD 你的强密码;如果是要把验证模式从 Windows 改成混合可以在 SSMS 里右键服务器 → 属性 → 安全性 → 选中SQL Server 和 Windows 身份验证模式改完同样要重启服务。6. 装完之后必须做的几件事6.1 打累积更新别停在 RTM刚装完的版本号是 16.0.1000.6也就是 RTM 版本。RTM 到现在已经有一段时间了期间修复的问题不少功能上的改进也不少所以装完第一件事是打累积更新。累积更新是滚动发布的装最新的那个就行不用一个个往上打。打补丁之前一定要做两件事一是确认服务能正常停止二是把重要的库先备份一遍。补丁安装过程会重启服务虽然绝大多数情况都很顺利但数据库这东西没有赌的必要。打完之后重新执行前面那个查询ProductLevel会从 RTM 变成 CU 加数字版本号的第三个数字也会变。把这个版本号记录下来写进你的环境台账。6.2 最大内存和 tempdb 的调整设最大服务器内存是我认为装完之后最重要的一次配置。SQL Server 默认会尽量占用系统内存如果不设上限跑一段时间之后操作系统可能连远程桌面都卡。设置方法是右键服务器 → 属性 → 内存把最大服务器内存设成一个合理值。经验算法是物理内存 16GB 以下时留给操作系统 4GB16GB 以上时一般按物理内存的 75% 到 80% 来设。比如 64GB 的机器最大服务器内存设 50GB 到 52GB 比较稳妥。注意最小服务器内存不要和最大值设成一样那个不是用来锁内存的。tempdb 的检查也是必做的。查询一下当前的配置SELECT name AS 文件名, physical_name AS 物理路径, size * 8 / 1024 AS 大小MB, growth * 8 / 1024 AS 增长MB, is_percent_growth AS 是否按百分比增长 FROM sys.master_files WHERE database_id 2;如果是否按百分比增长是 1那就改成固定大小增长一般是 512MB 或 1024MB。同时确认所有 tempdb 数据文件的大小一致、增长量一致这样 SQL Server 会按比例填充不会出现某个文件提前写满的情况。另外记得把 tempdb 的恢复模式设为 SIMPLE这是默认值但如果被人改过会有性能影响。6.3 备份策略和例行检查装完不配备份的数据库等于没装。最少要有这么几条数据库恢复模式设成 FULL如果要做时间点恢复或者 SIMPLE如果只接受恢复到最近一次备份。每天一次完整备份每隔几小时一次差异备份如果恢复模式是 FULL还要加上日志备份频率取决于你能接受多少数据丢失。备份文件不要和数据文件在同一个物理设备上这是最容易被忽略也最致命的一条。例行检查我会放一个每周跑一次的脚本做三件事检查备份作业最近一次执行是否成功、跑DBCC CHECKDB检查数据页完整性、看错误日志里有没有异常。这些都可以用维护计划或者现成的脚本工具来搭重点是要有而且要有人看结果。我见过太多环境维护计划建好了但没人看过执行历史直到要恢复数据的时候才发现备份一直是失败的。7. 几个反复踩过的坑写在这里省你时间第一个坑排序规则装错。我见过一个团队中文业务库装成了默认的拉丁排序规则结果存储过程里做中文模糊查询、字符串比较到处出问题最后方案是导出数据、重建实例、重新导入整整停了一天。所以安装向导到排序规则那一页停下来想三十秒再点下一步。第二个坑实例名和端口搞混。命名实例的动态端口问题前面反复提了。我现在的习惯是只要装了命名实例立刻进配置管理器把端口固定然后记录到文档里。有多个人维护的环境这个记录比什么都重要。第三个坑杀毒软件干扰。安装过程卡在中途、服务启动失败、数据文件被锁定这几种现象八成是杀软的实时扫描。做法是给 SQL Server 的程序目录、数据目录、日志目录、备份目录全都加上排除项不只是安装时临时关一下。第四个坑把 SSMS 和数据库引擎的版本混为一谈。经常有人问SQL Server 2022 用什么版本的 SSMS其实这两者没有强制绑定关系SSMS 的版本按你自己的管理需求选就行。真正需要注意的是运行 SSMS 的机器上的运行时组件是否满足要求。第五个坑忘了记录安装配置。前面提到的ConfigurationFile.ini还有日志目录里的 Summary.txt我都建议归档保存。环境出问题需要重建的时候有没有这份记录工作量差好几倍。我现在还会额外做一件事就是把SELECT VERSION的输出、实例名、端口、排序规则、管理员账户这几项写成一页纸的环境说明跟配置文件和日志放在一起。第六个坑在同一台机器上又装数据库又装管理工具又想跑应用。测试环境资源紧张可以理解但数据库服务器该独占还是得独占尤其是内存和磁盘 IO。真挤在一起的时候至少要把最大服务器内存设得保守一点把应用的连接池上限压下来别让应用把数据库拖垮。最后分享一个我自己常用的做法装完一台之后我会立刻用sqlcmd跑一小段脚本把版本、排序规则、实例名、端口、文件路径这些信息全部导出来存成一个文本文件跟镜像和配置文件放在一起。以后要装第二台、第三台对着这个文件配一遍就行不用再去回忆当时点了哪些选项。这一步多花五分钟后面省的是半天。
返回列表