简介这份资源是面向数据库初学者与运维人员的 SQL Server 2016 安装图文教程以 PDF 文档形式呈现帮助读者在 Windows 环境下独立完成数据库的部署与初始化配置。压缩包内共 1 个 PDF 文件体积约 1.42MB轻量易存适合随时查阅对照。教程以截图配合文字说明的方式完整覆盖从进入安装中心、选择全新安装模式、输入产品密钥、接受协议到全局规则检查、功能选择、实例配置、PolyBase 与服务器配置、引擎混合模式设置、Analysis Service 与 Reporting Services 配置、Distributed Replay 控制器及客户端配置等各环节并附有安装确认页面与进度等待提示对易出错的实例配置和密码记忆点也有特别提醒。目前已有 2169 人学习下载适合需要快速上手 SQL Server 2016 或重装时对照排错的读者参考。1. SQL Server 2016 安装步骤图文教程从零到能连上的完整路径很多人第一次装 SQL Server 2016卡住的地方根本不是安装本身而是装完之后连不上。我见过太多人对着“安装成功”的界面发愣SSMS 一打开服务器名称填了localhost点连接报错 18456 或 08001。所以这篇不是那种“下一步下一步”的流水账而是把安装步骤和装完之后的连通性验证串起来讲。SQL Server 2016 安装步骤图文教程这个事核心就三块装之前的环境检查、装的时候实例和账户怎么选、装完之后怎么确认真的能用。适合谁看刚入行的后端、运维、数据分析或者需要在本机搭一套开发库的工程师。如果你之前装过 SQL Server 2008 R2那套经验在 2016 上有一半会翻车尤其是身份验证模式和端口这块。2. 装之前先把环境摸清楚版本选型与前置检查2.1 版本选型Express、Developer、Standard 到底选哪个SQL Server 2016 的安装介质分好几个版本选错了后面会很难受。Express 免费但数据库上限 10GB内存最大用 1.4GBCPU 最多 4 核做本地开发够用但稍微大一点的数据集就憋屈。Developer 版功能跟 Enterprise 一样全只是授权限制不能用于生产本地开发和学习首选这个。Standard 版才是能上生产的但安装包和授权成本不一样。我一般建议个人学习、本地开发直接上 Developer 版。别用 Express因为 Express 没有 SQL Server Agent后面你想做定时任务或者作业调度发现根本没有这个组件只能重装。这个坑我踩过血泪经验。版本数据库上限内存上限SQL Agent适用场景Express10GB1.4GB无轻量本地测试Developer无限制OS 上限有开发/学习Standard524PBOS 上限有生产环境安装介质方面微软官方提供 ISO 和 EXE 两种。ISO 挂载后直接跑setup.exeEXE 是自解压包解压完也是跑setup.exe。注意别去下那种来路不明的精简版SQL Server 的安装依赖 Windows Installer 和 .NET Framework精简版经常把依赖阉割掉装到一半报“无法加载 DLL”之类的玄学错误。2.2 系统前置条件.NET、Windows Installer 和磁盘空间SQL Server 2016 要求 .NET Framework 4.6 以上Windows 10/11 和 Server 2016 自带的基本都满足。但如果你是在 Windows 7 或者 Server 2012 上装得先手动装 .NET 4.6。检查方法很简单打开注册表HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full看Release值394254 以上才是 4.6。磁盘空间方面完整安装数据库引擎 SSMS 复制 全文检索大概要 6GB 左右但安装过程中临时文件会占到 10GB 以上。C 盘至少留 15GB 余量否则装到“安装程序支持规则”那一步会直接告诉你空间不足。还有一个容易被忽略的点计算机名。SQL Server 2016 不允许计算机名包含下划线或者纯数字开头如果你机器名是test_server或者123pc安装程序会在规则检查阶段报错。改机器名要重启所以最好在装之前就确认好。# 检查 .NET Framework 版本PowerShell Get-ItemProperty HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full | Select-Object Release # 检查磁盘剩余空间 Get-PSDrive C | Select-Object Used,Free # 查看当前计算机名 hostname上面三条命令分别对应 .NET 版本、C 盘空间和机器名检查。Release值如果小于 394254先去装 .NET 4.6。Free小于 15GB 就清理磁盘。机器名有下划线或数字开头提前改掉重启。2.3 关掉防火墙和杀毒软件的实时防护临时这一步不是必须但能省掉很多莫名其妙的失败。SQL Server 安装过程中会创建大量临时文件、注册 COM 组件、写注册表某些杀毒软件会拦截这些操作导致安装回滚。我遇到过 360 把 SQL Server 的sqlservr.exe当成可疑程序直接隔离装完服务起不来。临时关闭实时防护装完再开回来。防火墙不用全关但 1433 端口后面要放行这个在配置阶段处理。3. 安装过程逐项拆解实例配置、账户与排序规则3.1 启动安装程序与功能选择挂载 ISO 或者解压 EXE 之后右键setup.exe以管理员身份运行。注意一定要用管理员权限否则到“安装程序支持规则”那一步会报“需要管理员权限”然后卡住。进入安装中心后左侧选“安装”右侧点“全新 SQL Server 独立安装或向现有安装添加功能”。接下来是产品密钥Developer 版不需要密钥直接下一步。接受许可条款然后会跑一遍支持规则检查。如果前面环境没问题这里应该全绿。有警告可以忽略有失败必须解决。功能选择页面是第一个关键决策点。我一般勾这几个Database Engine Services必须SQL Server Replication做数据同步用Full-Text and Semantic Extractions for Search全文检索Client Tools Connectivity客户端连接组件Client Tools Backwards Compatibility兼容旧版客户端SSMS 在 SQL Server 2016 里是独立安装的不在这个功能树里。装完数据库引擎之后要单独去装 SQL Server Management Studio 2016。这个跟 2008 R2 不一样2008 R2 的 SSMS 是集成在安装包里的。3.2 实例配置默认实例还是命名实例实例配置这一步选“默认实例”还是“命名实例”取决于你机器上有没有别的 SQL Server。如果只有这一个选默认实例实例名就是MSSQLSERVER连接的时候直接写localhost或者.就行。如果已经有别的版本比如 2008 R2 已经占了默认实例那 2016 只能装命名实例比如MSSQLSERVER2016连接的时候要写localhost\MSSQLSERVER2016。实例 ID 一般跟实例名保持一致目录会自动生成。根目录我习惯改成D:\SQL2016因为默认的C:\Program Files\Microsoft SQL Server路径太长后面找日志文件很麻烦。但注意改目录之后数据文件和日志文件的路径也要跟着改不然会混在一起。排序规则Collation这块中文环境一般选Chinese_PRC_CI_ASCI 是不区分大小写AS 是区分重音。如果你的库要跟别的系统做跨库查询排序规则必须一致否则会报“排序规则冲突”。这个坑在做数据迁移的时候特别常见。3.3 服务账户与身份验证模式服务账户页面SQL Server 数据库引擎的服务账户我一般用NT AUTHORITY\SYSTEM或者专门建一个域账户。本地开发用NT AUTHORITY\SYSTEM就行省事。但生产环境不要用 SYSTEM权限太大。排序规则下面就是数据库引擎配置的核心身份验证模式。两种选择Windows 身份验证模式只能用 Windows 账户登录适合纯内网环境。混合模式Windows 账户和 SQL 账户都能登录需要设置 sa 密码。我强烈建议选混合模式并且设置一个强密码。为什么因为后面你用 JDBC、ODBC 或者别的语言连接的时候Windows 身份验证配置起来很麻烦尤其是跨平台。混合模式虽然安全性稍低但开发阶段方便太多。sa 密码要满足复杂度要求至少 8 位包含大小写字母、数字和符号。“指定 SQL Server 管理员”那里点“添加当前用户”把你自己的 Windows 账户加进去。这样即使 sa 密码忘了你还能用 Windows 账户登进去改。3.4 数据目录与 TempDB 配置数据目录页面把用户数据库、日志、备份、TempDB 的路径都改到 D 盘或者数据盘。TempDB 特别重要SQL Server 2016 默认只建一个 TempDB 数据文件在高并发下会成为瓶颈。安装完之后可以手动加文件但安装时如果能改就改。TempDB 的大小和增长方式安装时不用太纠结装完再调。但路径一定要跟数据文件分开最好放在不同的物理磁盘上。如果只有一块盘那就分目录。-- 安装完成后检查 TempDB 配置 SELECT name, physical_name, size, growth FROM sys.master_files WHERE database_id 2; -- 增加 TempDB 数据文件示例加到 4 个 ALTER DATABASE tempdb ADD FILE ( NAME tempdev2, FILENAME D:\SQL2016\TempDB\tempdev2.ndf, SIZE 512MB, FILEGROWTH 256MB );第一条查询看 TempDB 当前有几个文件、大小和增长方式。第二条是增加文件的语法SIZE给初始大小FILEGROWTH给增长量。一般建议 TempDB 数据文件数量等于 CPU 核心数但不超过 8 个。每个文件大小一致增长量也一致否则 SQL Server 会按比例填充导致热点。3.5 安装完成后的第一件事确认服务状态安装程序跑完会显示“成功”或者“失败”。不管成功失败先去服务管理器看 SQL Server 服务有没有起来。服务名是SQL Server (MSSQLSERVER)或者SQL Server (实例名)。如果服务没起来去事件查看器看 Windows 日志应用程序日志里会有具体错误。服务起来之后打开 SSMS 2016服务器名称填localhost或者.\MSSQLSERVER2016身份验证选“SQL Server 身份验证”登录名sa密码是你设的那个。能连上说明安装没问题。连不上看下一章的排查。4. 装完连不上六个高频翻车现场排查4.1 报错 18456登录失败现象SSMS 连接时报“用户 ‘sa’ 登录失败。原因错误 18456”。原因混合模式没启用或者 sa 账户被禁用。解决先用 Windows 身份验证登进去执行下面两条命令。-- 启用 sa 账户 ALTER LOGIN sa ENABLE; -- 修改 sa 密码 ALTER LOGIN sa WITH PASSWORD YourStrongPassword123!; -- 确认身份验证模式 SELECT SERVERPROPERTY(IsIntegratedSecurityOnly); -- 返回 0 表示混合模式返回 1 表示仅 Windows 身份验证如果IsIntegratedSecurityOnly返回 1说明安装时选了仅 Windows 身份验证。需要改注册表HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer把LoginMode改成 2然后重启 SQL Server 服务。4.2 报错 08001无法连接到服务器现象SSMS 连接时报“无法连接到 localhost。附加信息无法打开到 SQL Server 的连接”。原因TCP/IP 协议没启用或者端口不对。解决打开 SQL Server 配置管理器展开“SQL Server 网络配置”点“MSSQLSERVER 的协议”把 TCP/IP 启用。然后双击 TCP/IP在“IP 地址”选项卡里找到 IPAll把 TCP 端口设成 1433。改完重启 SQL Server 服务。# 检查 1433 端口是否监听 netstat -ano | findstr :1433 # 检查防火墙规则 netsh advfirewall firewall show rule nameall | findstr 1433netstat看端口有没有起来netsh看防火墙有没有放行。如果没有监听说明 TCP/IP 没启用或者端口没设对。防火墙没放行的话加一条入站规则。4.3 SSMS 连不上但服务明明在跑现象服务管理器里 SQL Server 服务是“正在运行”但 SSMS 就是连不上。原因实例名写错了或者用了命名实例但没写实例名。解决确认实例名。打开服务管理器看服务名括号里的内容。如果是SQL Server (MSSQLSERVER)实例名就是默认实例连接写localhost或者.。如果是SQL Server (SQLEXPRESS)连接要写localhost\SQLEXPRESS。命名实例的端口是动态的除非你手动设了 1433。4.4 安装过程中报“无法加载 DLL”现象安装到一半弹窗报“无法加载 DLL”或者“找不到指定模块”。原因缺少 Visual C 运行库或者杀毒软件拦截了临时文件。解决先装 Visual C 2015-2019 运行库x64 和 x86 都装然后临时关闭杀毒软件重新跑安装程序。如果还是不行去C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log看详细日志里面会写具体是哪个 DLL 加载失败。4.5 排序规则冲突导致跨库查询失败现象两个库做 JOIN 查询时报“无法解决 equal to 操作的排序规则冲突”。原因两个库的排序规则不一致比如一个是Chinese_PRC_CI_AS另一个是SQL_Latin1_General_CP1_CI_AS。解决在查询里显式指定排序规则。SELECT * FROM DB1.dbo.Table1 t1 JOIN DB2.dbo.Table2 t2 ON t1.Name COLLATE Chinese_PRC_CI_AS t2.Name COLLATE Chinese_PRC_CI_AS;或者在建库的时候就统一排序规则。已经建好的库改排序规则很麻烦要导出数据、重建库、再导入。所以安装时选好排序规则后面省很多事。4.6 内存占用过高导致系统卡顿现象SQL Server 服务起来之后内存占用一路飙升把系统内存吃满。原因SQL Server 默认会尽可能多地占用内存这是设计行为不是 bug。解决设置最大服务器内存。-- 查看当前内存设置 EXEC sp_configure show advanced options, 1; RECONFIGURE; EXEC sp_configure max server memory (MB); -- 设置最大内存为 4096MB EXEC sp_configure max server memory (MB), 4096; RECONFIGURE;max server memory控制缓冲池的最大值。一般建议留 2-4GB 给操作系统剩下的给 SQL Server。比如机器 16GB 内存SQL Server 设 12GB 左右。设太小会影响性能设太大系统会卡。5. 装完之后怎么验证连通性、性能与备份恢复5.1 用 SSMS 跑一遍完整验证装完不是能连上就完事了。我一般会跑一套验证流程建库、建表、插入数据、查询、备份、还原。这套跑通说明数据库引擎、存储、权限都没问题。-- 建测试库 CREATE DATABASE TestDB; GO -- 建表 USE TestDB; CREATE TABLE dbo.TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(50) NOT NULL, CreatedAt DATETIME DEFAULT GETDATE() ); GO -- 插入数据 INSERT INTO dbo.TestTable (Name) VALUES (N测试1), (N测试2), (N测试3); GO -- 查询 SELECT * FROM dbo.TestTable; GO -- 备份 BACKUP DATABASE TestDB TO DISK D:\SQL2016\Backup\TestDB.bak WITH FORMAT, INIT, COMPRESSION; GO -- 还原先删库再还原 USE master; DROP DATABASE TestDB; GO RESTORE DATABASE TestDB FROM DISK D:\SQL2016\Backup\TestDB.bak WITH MOVE TestDB TO D:\SQL2016\Data\TestDB.mdf, MOVE TestDB_log TO D:\SQL2016\Log\TestDB_log.ldf; GO这段脚本覆盖了建库、建表、增删查、备份还原。WITH FORMAT, INIT表示覆盖现有备份集并初始化COMPRESSION开启备份压缩。还原时的MOVE子句指定数据文件和日志文件的新路径因为原路径可能已经不存在了。跑完这一套基本能确认安装是完整的。5.2 检查关键服务与端口除了数据库引擎还有几个服务值得确认服务名作用是否必须SQL Server (MSSQLSERVER)数据库引擎必须SQL Server Agent作业调度可选SQL Server Browser命名实例解析命名实例必须SQL Server Full-text Filter Daemon全文检索可选SQL Server Browser 服务在命名实例场景下必须启动否则客户端无法解析实例名到端口。默认实例不需要这个服务。端口方面1433 是默认实例的 TCP 端口。命名实例默认是动态端口每次启动可能变。如果客户端要连命名实例要么启动 Browser 服务要么在配置管理器里把命名实例的端口也固定成 1433 以外的值。5.3 用 SQLCMD 做无 GUI 验证有时候 SSMS 连不上但你想确认数据库引擎本身是不是正常。用 sqlcmd 命令行工具可以绕过 SSMS 直接连。# Windows 身份验证连接 sqlcmd -S localhost -E # SQL 身份验证连接 sqlcmd -S localhost -U sa -P YourStrongPassword123! # 执行查询 sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q SELECT VERSION-E是 Windows 身份验证-U和-P是 SQL 账户。-Q直接执行查询并退出。如果 sqlcmd 能连上但 SSMS 连不上问题在 SSMS 的配置或者 .NET 环境不在数据库引擎。6. 几个让后续维护省心的配置技巧装完只是开始后面日常用起来有几个配置我每次都会顺手做掉。第一个是开启远程连接。默认安装完只允许本机连局域网内别的机器连不上。打开配置管理器TCP/IP 启用IPAll 端口设 1433防火墙放行 1433 入站重启服务。这三步缺一不可我见过有人只改了 TCP/IP 没放行防火墙排查了半天。第二个是配置备份作业。Developer 版有 SQL Server Agent可以建个维护计划每天自动全备每小时差异备份。别等到数据丢了才想起来没备份后悔药没地方买。维护计划用 SSMS 的向导就能建选“备份数据库完整”设好计划和目标路径就行。第三个是开启远程 DAC。专用管理员连接DAC在数据库卡死或者连不上的时候能救命。默认只允许本机 DAC开启远程 DAC 要改注册表或者用sp_configure。-- 开启远程 DAC EXEC sp_configure remote admin connections, 1; RECONFIGURE;开启之后用ADMIN:localhost作为服务器名称连接就能绕过普通连接的限制。这个连接不走 SQL Server 的常规监听端口即使数据库引擎响应缓慢也能连进去杀会话或者查 DMV。第四个是定期更新统计信息和重建索引。SQL Server 2016 有自动更新统计信息的机制但高并发写入场景下自动更新跟不上。我一般建个每周一次的作业跑UPDATE STATISTICS和ALTER INDEX ... REBUILD。碎片率超过 30% 重建10%-30% 重组。-- 查看索引碎片率 SELECT OBJECT_NAME(ips.object_id) AS TableName, i.name AS IndexName, ips.avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, LIMITED) ips JOIN sys.indexes i ON ips.object_id i.object_id AND ips.index_id i.index_id WHERE ips.avg_fragmentation_in_percent 10 ORDER BY ips.avg_fragmentation_in_percent DESC;这个查询用LIMITED模式速度快适合日常巡检。碎片率高的索引再针对性处理不要无脑全库重建大库重建一次可能几个小时。最后说个习惯每次装完 SQL Server我都会把安装日志、当前配置、端口状态、备份路径记到一个文本文件里放在 D 盘根目录。下次出问题直接翻这个文件比重新排查快得多。装数据库这事装一次记一次后面就是复制粘贴。希望帮到你。本文还有配套的精品资源点击获取