装SQL Server 2019,是我这些年帮人搭数据库环境时被问得最多的一件事。有人装了三次都连不上,有人装完发现版本选错,有人卸载之后重装各种残留问题,翻来覆去折腾一下午。其实只要你把安装前的几个决定做对,后面基本就是一路下一步。这篇我把自己从安装、使用、排错到卸载的一套完整流程整理出来,包括最容易翻车的几个报错和对应解法,照着走能少走很多弯路。适合刚接触数据库的新人,也适合要搭开发环境、准备开始写SQL的开发者。如果你的目标只是把SQL Server 2019装起来正常用,不考虑高可用集群、性能调优这些进阶场景,这篇文章基本够用了。
1. 安装前先想清楚:版本选择与下载准备
1.1 四个常见版本怎么挑
很多新手卡在第一步,不是因为不会点下一步,而是不知道装哪一个版本。SQL Server 2019的版本划分其实很简单,对普通用户来说,主要看Express、Developer、Standard、Enterprise这四个。
| 版本 | 免费? | 最大实例内存 | 适用场景 | 备注 |
|---|---|---|---|---|
| Express | 免费 | 1410MB | 学习入门、小型应用 | 数据库文件上限10GB,本地练习够用 |
| Developer | 免费 | 不受限 | 开发、测试、学习 | 功能等同Enterprise,仅限非生产环境 |
| Standard | 收费 | 128GB | 中小生产环境 | 需要许可证授权 |
| Enterprise | 收费 | 系统上限 | 大型生产环境 | 功能最全,价格也最高 |
如果你只是自己学SQL或者做项目开发,我建议直接选Developer版,功能和最贵的Enterprise版几乎一样,限制只是不能用于生产环境,而绝大多数人根本不会拿自己的电脑去跑商业生产库。Express版虽然也免费,但内存限制和数据库10GB限制会让你以后练手时处处碰壁,查个复杂数据明显吃力。不要上来就装Enterprise,盗版破解这种东西在数据库领域非常不可取,一旦踩到授权问题,比软件报错麻烦得多。
顺便说一嘴,版本定好后就是找安装包。我一般去官网下载中心搜SQL Server 2019 Developer Edition。下载方式有两种:一种是几MB的在线安装引导器,边下边装;另一种是完整ISO镜像,大约1.5GB。我更推荐下载ISO,原因很简单:在线安装引导器在网络有波动时容易卡住,然后报一个很玄乎的错误,而ISO本地装着非常稳。
1.2 安装前的系统检查和习惯
SQL Server 2019可以装在Windows 10、Windows 11、Windows Server 2016以上系统,Win7用户就别想了。内存建议至少8GB,硬盘剩余空间至少10GB。很多人在老电脑上装完卡得要命,其实SQL Server跑起来的内存占用比想象中高,4GB内存的机器装完基本就剩半条命了。
另外,安装前最好确认系统已经装好最新的.NET Framework。SQL Server安装向导本身依赖.NET组件,当然安装包会自动帮你装,但如果系统补丁太老,这一步骤偶尔会失败。我自己的习惯是安装前先跑一遍Windows Update,把所有重要更新装完,然后重启一次再开始安装。别小看这个动作,能躲开至少一半的奇怪问题。
1.3 安装过程细拆
下载完ISO镜像,右键加载虚拟光驱,双击里面的setup.exe,进入SQL Server安装中心。选择左侧的“安装”,然后点第一项“全新SQL Server独立安装或向现有安装添加功能”。
这里有几个容易选错的点,我一个一个说。
功能勾选是第一步。全选虽然省事,但很多组件你用不到,比如Integration Services、Analysis Services、Reporting Services,装了只会占用系统资源和拖慢启动。你要是只想用数据库做查询和开发,只勾“数据库引擎服务”和“客户端工具连接”这两项就完全够了。如果你后续要用可视化分析工具,可以再补一个“SQL Server Management Studio”相关组件,但SSMS现在已经是独立安装包了,不太依赖这个向导。
实例配置这一步,默认实例名是MSSQLSERVER,端口默认1433。你自己使用完全没问题,直接下一步。如果你是给公司服务器装的,就要考虑用命名实例,比如 “SERVERNAME\DEV”,这样一台机器上能装多个实例互不干扰。命名实例的端口不是固定1433,而是动态分配,后面连不上的几率高很多,新手不是必须就别用命名实例。
服务账户这块推荐选“NT Service\MSSQLSERVER”这种虚拟账户,不要图省事选本地系统账户。虚拟账户是SQL Server自己管理的服务账户,权限控制更严格,安全风险小。SQL Server和SQL Server Agent两个服务的启动类型都设为“自动”,否则重启电脑后数据库服务不会自己跑起来,客户端就连不上了。
混合身份验证模式是重点。安装向导到“服务器配置”和“数据库引擎配置”两步时,很多人直接默认,结果装完发现自己设的sa账号根本登不上。安装时一定要在“身份验证模式”里选“混合模式(SQL Server身份验证和Windows身份验证)”,然后设置一个sa密码。密码不要太简单,至少要混合大小写字母和数字,否则某些配置项会直接报错不给过。我见过有人设了“123456”死活装不完,换了个复杂一点的密码就好了。
数据目录建议改到非系统盘。默认装在C:\Program Files\Microsoft SQL Server,数据库文件默认也在C盘。如果你C盘空间不大,建议把“数据根目录”改到D盘或E盘的独立目录,比如D:\SQLData。这一步很多人忽略,等你用了几个月C盘飘红再来挪数据库,那才叫痛苦。
TempDB配置不用动。安装向导新版里会有TempDB数据文件和日志文件的数量设置,默认即可。系统会按照CPU核心数自动生成多个TempDB数据文件来减少争用,老手可能手动调,新手保持默认反而最稳。
配置检查全部通过后,点“安装”,等进度条跑完。安装完成后可以看到“状态: 已完成”的页面,这时候SQL Server 2019本身已经装好了。
1.4 安装后的第一件事:装SSMS和验证连接
装好数据库引擎之后,桌面上不会多任何图标,很多人还以为没装成功。SQL Server的服务是后台运行的,你需要一个图形界面来操作它,这就是SSMS(SQL Server Management Studio)。注意,SSMS是一个独立软件,不在上面的安装向导里。去官网搜“SQL Server Management Studio”,下载SSMS 18.x或19.x,装完就能用了。
第一次打开SSMS,服务器名称框里填“.”或者“localhost”都可以,表示连接本机默认实例。身份验证方式如果是当初选的Windows身份验证,直接点“连接”就能进去。如果选的是混合模式,拿Windows身份登录也没问题,sa账号是给以后跨机器连接或程序连接用的。
看到左侧对象资源管理器里出现“数据库”、“安全性”、“服务器对象”这些文件夹,说明安装和连接都成功了。可以顺手右键点“数据库”,选“新建数据库”,建一个测试库,什么都不改,点确定,看到数据库列表里出现新库的名字,整个安装流程才算完美闭环。
2. 基操只是热身:建库建表、备份恢复和账号权限
2.1 对象资源管理器里都有什么
SSMS左侧的对象资源管理器就是你的数据库总控台。“数据库”节点下面有系统数据库和你自己建的库,系统里面那四个master、model、msdb、tempdb千万别动,删了或者改了,你的SQL Server基本就废了。“安全性”下面可以管理登录名,比如sa账号、各种Windows账号。“管理”下面有事件日志和活动监视器,以后排查死锁和阻塞会用到。
如果你之前没接触过数据库,我一分钟说清楚概念:一个“数据库”就是若干“表”的集合,一张表像Excel工作表一样,有列(字段)有行(记录)。SQL Server的T-SQL就是操作这些表的结构化查询语言,增删改查是入门四件套。
2.2 建库、建表、插入和查询的完整示例
先创建数据库。在SSMS里打开新建查询窗口(点工具栏的“新建查询”),执行下面这段:
CREATE DATABASE MySchool; GO USE MySchool; GO CREATE TABLE Student ( StudentID INT PRIMARY KEY, StudentName NVARCHAR(50) NOT NULL, Age INT, EnrollDate DATETIME DEFAULT GETDATE() ); GOStudentID是主键,代表每个学生唯一编号。NVARCHAR(50)用来存中文姓名,N开头的类型是SQL Server处理Unicode的标配,如果不用N开头的VARCHAR,中文很容易变问号。Age字段就普通整数,EnrollDate设置了默认值,这样插入数据时如果没写日期,系统自动填当前时间。
接着插入几行数据:
INSERT INTO Student (StudentID, StudentName, Age) VALUES (1, N'张三', 20); INSERT INTO Student (StudentID, StudentName, Age, EnrollDate) VALUES (2, N'李四', 22, '2024-09-01');注意,中文前面一定要加N前缀,这算T-SQL里最容易踩的坑。不加N,虽然有时候在SSMS里看着没问题,但换成不同排序规则或从外部程序写入时,中文就可能变成“????”。
查询:
SELECT * FROM Student WHERE Age >= 21;这就是标准的查表语句,*号代表所有列,WHERE后面是过滤条件。执行后下面的结果窗口会显示符合条件的行。到这里,你已经完整走了一遍SQL Server的建库、建表、写数、查数的基本流程,数据库日常使用的核心就是这么个套路。
2.3 备份和还原,保命技能
数据无价,备份是每天都要做的事。右键某个数据库,任务里有“备份”,或者用代码:
BACKUP DATABASE MySchool TO DISK = 'D:\SQLData\MySchool.bak'; GO备份文件是一个.bak文件,这个文件拷到任何一台装了SQL Server的电脑上都能还原。还原语句更简单:
RESTORE DATABASE MySchool FROM DISK = 'D:\SQLData\MySchool.bak' WITH REPLACE; GO为什么加WITH REPLACE?因为目标库里如果已经存在同名数据库,还原会报错说数据库正在使用或已存在,这个参数允许覆盖。新手第一次还原时最容易遇到的就是这个报错,直接加WITH REPLACE基本都能过。
另外,备份文件不要放在C盘和数据库文件同一目录,不然磁盘坏了数据备份一起没。我习惯每周日晚上把几个重要库全部备份一次,备份文件按日期重命名,保留最近四周,再多就自动删掉,防止磁盘被塞满。
2.4 新建登录名和给最小权限
开发时用sa账号连接确实方便,但生产环境用sa账号是很危险的操作,一旦密码泄露,等于把整个数据库裸奔给别人看。正经做法是给应用单独建一个登录名,只授予它需要的库权限。
在“安全性”节点右键“登录名”,新建登录名。登录名填比如AppUser,选择SQL Server身份验证,设置密码。然后在左侧“用户映射”里勾选要访问的数据库,比如MySchool,下面“数据库角色成员身份”勾选db_datareader和db_datawriter。
- db_datareader:只读,能查所有表
- db_datawriter:只写,能增删改所有表数据
这两个角色加在一起,刚好满足大多数应用程序的日常读写需求,又不能去删表、改表结构,权限控制刚刚好。如果你的应用只需要查数据做报表,那就只给db_datareader,连写权限都不给,这是最安全的最小授权方案。
3. 那些年我们一起踩过的报错
3.1 安装过程中的经典卡点
装SQL Server时报“需要重新启动计算机”,这个吓退了不少人。错误信息很唬人,但其实经常是之前某次软件安装留下的残留标记。解决办法是打开注册表编辑器,定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager右边找PendingFileRenameOperations这个值,直接把整个值删掉,然后再重新运行安装向导,这问题就没了。删之前最好确认一下自己近期没有系统更新正在等待生效,如果有,就先重启再装SQL Server,否则有概率把系统更新也搞坏。
还有一种常见报错是安装到最后一步提示“添加防火墙规则失败”。这是在配置过程中无法创建防火墙入站规则,通常是因为你关闭了Windows Firewall服务或之前手动改过防火墙策略。解决办法是把Windows Defender防火墙服务设为自动并启动,具体为:按Win+R输入services.msc,找到“Windows Defender Firewall”服务,启动它,然后再重试安装向导的该步骤。
3.2 装好了但客户端连不上
这种情况十有八九出在远程连接,本地连接基本不存在这个问题。SQL Server安装完成后默认只允许本机通过共享内存连接,不允许远程用TCP/IP协议访问。你需要在Windows搜索框输入“SQL Server 2019配置管理器”,打开后点“SQL Server网络配置”,找到“MSSQLSERVER的协议”,右键TCP/IP,选择“启用”。
启用了TCP/IP不一定万事大吉。还需要确保服务重启了,配置修改后要重启SQL Server服务才生效。再检查Windows防火墙是否允许1433端口入站。SQL Server安装时会默认加防火墙规则,但如果你用的是第三方安全软件,可能把规则拦掉了。手动加一条入站规则放行TCP 1433端口,这是远程连接数据库最常用的端口。
如果还是连不上,运行一下“SQL Server Browser”服务。这个服务在UDP 1434端口上负责给局域网客户端解析命名实例的端口。把该服务启动并设置为自动启动。
这里有一个很多人容易误解的点:本机SSMS连不上自己的实例,通常不是网络和防火墙问题,而是登录名配置问题,往下看。
3.3 登录失败18456,日志里没有详细原因
错误信息:“用户 ‘sa’ 登录失败。错误: 18456”。这是SQL Server整个生命里出场率最高的报错,没有之一。
第一排查方向是检查身份验证模式是否真的是混合模式。右键服务器实例选属性,切到“安全性”,确认“SQL Server和Windows身份验证模式”被选中。如果之前一直是Windows身份验证模式,那么sa账号无论密码对不对都会被拒绝,这是SQL Server安全策略默认行为。改完设置后需要重启SQL Server服务。
第二排查方向是看日志等级。SQL Server的错误日志会记录18456的具体严重级别,但SSMS界面默认只给一个笼统提示。用日志查看器看不了细节的话,直接看操作系统事件查看器里应用程序日志,来源是MSSQLSERVER,里面会有类似“登录失败 对用户’sa’。原因: 密码与所提供的登录名不匹配 [客户端: ]”。这个原因字段能明确告诉你到底是密码错、账号被禁用还是没有权限。
如果是sa账号被禁用,在SSMS里用Windows身份认证登录,安全性节点展开登录名,右键sa账号属性,状态页里“登录”选“启用”,顺手把密码改掉。教训是:安装向导里设完sa密码后,后续最好就用Windows身份登录进入SQL Server再验证一次,别一上来就扛着sa账号往外连,给自己添堵。
3.4 端口、命名实例和TLS导致的奇怪问题
一些朋友连接串写的是“localhost\SQL2019”,格式只对了前面一半。命名实例的正确写法是“主机名\实例名”,比如我这台机器叫“WORKSTATION-PC”,那连接串就是“WORKSTATION-PC\SQL2019”。填localhost只能连默认实例,连命名实例往往会报错“找不到服务器”。
TLS协议引发的连接问题是老玩家也会翻车的。SQL Server 2019默认启用加密连接,如果客户端机器缺少对应TLS版本支持,可能遇到“由于在客户端和服务器之间发生的 TLS 协议版本不匹配,因此无法发送登录数据”。解决办法是最新安装SQL Server 2019累积更新,然后在连接字符串里加Encrypt=False来绕过强制加密。不推荐长期关闭加密,但开发环境临时连一下倒没问题。
我整理了一份报错速查表,方便以后遇到问题时快速定位。
| 错误类型 | 典型报错信息 | 常见原因 | 首选排查方案 |
|---|---|---|---|
| 安装挂起 | 需要重新启动计算机 | 注册表残留重组标记 | 删除PendingFileRenameOperations |
| 防火墙 | 添加防火墙规则失败 | Windows防火墙服务未运行 | 启动防火墙服务后重试 |
| 连接失败 | 找不到实例名/连接超时 | TCP/IP未启用、端口不通 | 配置管理器启用TCP/IP并检查1433端口 |
| 登录失败 | 18456 | 混合模式未启用/sa禁用/密码错 | 检查身份验证模式和账号状态 |
| TLS不匹配 | 无法发送登录数据 | 客户端服务器TLS版本差异 | 更新SQL Server或临时关闭加密 |
| 还原失败 | 数据库正在使用 | 目标库已存在且被占用 | 用WITH REPLACE参数 |
4. 卸载不是点个删除那么简单
4.1 为什么卸载SQL Server比卸载普通软件麻烦
SQL Server不是单一的应用程序,它由数据库引擎、分析服务、集成服务、报表服务、SSMS等多个独立组件组成,安装时它们分别注册到操作系统的不同位置。如果在“程序和功能”里直接点卸载SQL Server 2019(某某实例),大概率会出现卸载界面转圈半天,最后提示某些组件卸载失败。正确顺序是从控制面板卸载入口进入,选择“删除”而不是“更改”,但最关键的是要把所有和SQL Server相关的条目都处理一遍,而不是只卸掉最大那一条。
我的顺序建议是这样:
- 停掉所有SQL Server相关Windows服务,包括SQL Server服务、SQL Server代理、SQL Server Browser
- 退出SSMS和所有连接到该实例的程序
- 打开控制面板,程序和功能,找到“Microsoft SQL Server 2019 (64-bit)”,点卸载
- 在卸载向导里选择要删除的数据库实例,确认后等待卸载
卸载向导会弹出一个列表,里面列着这个实例包含的各个功能,全部勾选。等向导走完,控制面板里应该还能看到一些剩下的SQL Server条目,比如“SQL Server 2019安装程序”、“SQL Server Management Studio”,这些也要逐个卸载。SSMS现在独立安装,直接像卸载普通软件一样从程序和功能里卸就行。
4.2 清理残留文件和注册表
卸载向导跑完之后,系统里还会残留一堆文件。如果不清理,下次重装大概率遇到“同名实例已存在”或者安装程序挂起的提示。
文件清理主要是这三个位置:
- C:\Program Files\Microsoft SQL Server
- C:\Program Files (x86)\Microsoft SQL Server
- C:\Program Files\Microsoft SQL Server Management Studio
其中C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER这个目录里通常存着数据库数据文件、日志文件和一些配置。如果你确定库里的数据都不要了,直接整个目录删掉。如果有要保留的备份,先把.mdf和.ldf文件以及.bak备份文件拷走,再删目录。
注册表清理是必要但风险较高的一步。打开regedit,定位到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 2019这两个键基本包含了SQL Server的注册信息。卸载完软件后,这两个键往往还在,里面记录着实例路径、版本号、服务账户信息。手动删除这两个键前一定先右键导出备份一份.reg文件,万一删错了可以导回恢复。另外,SQL Server可能会在服务相关键下面残留,比如:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER如果服务列表里还能看到MSSQLSERVER,说明这个键还在,一并删除。
4.3 重装前自检清单
清理完之后,我一般会按这个清单检查一遍,防止重装时又被老问题卡住:
- “Windows服务”里是否还有MSSQLSERVER相关服务,有就手动删除对应注册表服务键
- C盘和安装目录下是否还有Microsoft SQL Server文件夹
- 控制面板“程序和功能”里是否还有任何SQL Server条目
- 任务管理器里确认没有sqlservr.exe、sqlbrowser.exe进程在运行
- 如果之前配置了防火墙规则,顺手把SQL Server专用的入站规则删掉
一句话总结卸载要义:SQL Server不是一个软件,是一组软件,卸载顺序错、残留越积越多,重装时所有旧问题都会冒出来。你要是不想让自己陷入“装了卸、卸了装、永远装不好”的死循环,就老老实实把组件挨个卸干净。
5. 几次折腾之后,我沉淀下来的一点习惯
关于下载这件事,我再唠叨一句。网上搜SQL Server 2019安装包,结果里掺杂各种第三方的“一键安装包”,我强烈建议只认准官方下载中心和正规镜像源。安装包的哈希校验值最好也验证一下,尤其你下载的是ISO镜像,校验值对不上就不要用,指不定给人改了什么。
从我这些年的实际经验看,SQL Server 2019的安装难度百分之八十在安装前的决策上,版本选对、功能少勾、身份验证模式设对、密码设稳,后面就是一路畅通。剩余百分之二十才是各种报错处理,而报错处理最费时间的往往不是那个错本身,而是你搞不清楚自己当初选了什么配置。所以安装的时候顺手拿张纸记下自己选的实例名、端口、身份验证模式,甚至截个屏存着,等出问题时会感谢自己。
最后分享一个我每次装完必做的验证动作:重启一次电脑,然后什么都不点,等两分钟,再打开SSMS连接。如果重启后能秒连上去,并且SQL Server Agent服务状态是“正在运行”,说明服务和开机自启都配置正确,这台机器就能长期稳定当数据库开发环境用了。以后如果需要在这个基础上学习事务、索引、存储过程,或者用程序代码连接数据库,都会顺手很多。