前两天帮一个朋友装 SQL Server 2016,他刚换了台新电脑,想把数据库环境搭起来,好跑他那个用了快十年的老系统。结果装到一半出现了“安装程序无法识别当前操作系统版本”的提示,折腾了一个多小时。后来才发现,原来是他下载的安装包是英文版的,和中文版 Windows Server 2012 存在兼容性问题。这事让我想起,SQL Server 2016 看似安装简单,但每一步都可能踩坑,尤其是新手,一个细节没注意,就得从头再来。

先说系统准备这块。SQL Server 2016 对操作系统有硬性要求,最低必须是 Windows Server 2012 R2 或 Windows 8.1,推荐使用 Windows Server 2016 以上。很多人拿老旧的 Windows 2008 去装,结果装到一半直接报错,提示“不满足最低操作系统版本”。更坑的是,有些系统虽然满足版本要求,却缺少 .NET Framework 3.5 SP1 或 Windows Installer 4.5 的更新补丁,安装程序在检测环境时就会卡住。我的做法是先跑一次系统更新,把补丁全部打上,再检查磁盘空间——至少留出 6 GB 的空闲,否则解压安装文件时会报“磁盘空间不足”。另外,SQL Server 2016 有两个常见免费版本:Developer(开发版)和 Express(免费版)。Developer 功能完整但只能用于开发和测试,Express 有 10 GB 数据库大小限制。如果是正式生产环境,需要购买 Standard 或 Enterprise 版,千万别用 Developer 版跑业务,微软的许可条款明确禁止,违规会带来麻烦。
真正开始安装时,第一个容易踩的坑是安装类型的选择。安装向导启动后,会给出“全新 SQL Server 独立安装”和“添加功能到现有安装”两个选项。新手往往不看就点第一个,但如果电脑上之前装过旧版本(比如 SQL Server 2012),系统里可能残留共享组件或实例,这时选择“全新安装”会报冲突。正确做法是先打开“安装”菜单里的“已安装的 SQL Server 功能发现报告”,确认是否有旧版本。如果有,最好先彻底卸载,包括数据库引擎、Reporting Services、Analysis Services 等组件以及对应的注册表项。我见过有人图省事直接覆盖安装,结果装完后旧数据库文件打不开,新的又连不上,两边都废了。
组件选择也是门学问。SQL Server 2016 的安装程序默认勾选数据库引擎服务、SQL Server 复制、全文本和语义搜索等核心功能。但很多人会顺手把“机器学习服务(数据库内)”和 “R Services” 也勾上,因为名字听起来高大上。问题是,机器学习服务需要额外安装 Python 和 R 的运行环境,对内存和 CPU 有要求。如果只装一个普通业务系统根本用不到,勾了反而让安装时间翻倍,还容易因依赖包下载失败而中断。建议只勾选“数据库引擎服务”和“客户端工具连接”这两个,其他功能等需要时再添加。记住,SQL Server 2016 支持“添加功能”,不必装完后重新安装。
实例配置这一步,很多人在取名上会犯糊涂。实例分为默认实例和命名实例。默认实例直接以电脑名称作为连接地址,例如 “localhost” 或 “192.168.1.100”;命名实例则在地址后加斜杠和实例名,如 “localhostSQL2016”。如果服务器上只装一个 SQL Server,使用默认实例最省事,因为连接字符串里不需要写实例名。但如果要在同一台服务器上跑多个版本(比如同时运行 SQL Server 2012 和 2016),就必须使用命名实例来区分。我朋友曾把命名实例取名为 “SQLSERVER”,结果连接时总是失败,因为这个名字与系统服务名冲突。命名实例最好简短、不要使用特殊字符和空格,例如 “DEV” 或 “PROD”,这样写连接字符串时更顺手。
服务账户和排序规则是新手最容易忽略却后果严重的两项。服务账户那块,安装程序会让你为数据库引擎服务和 SQL Server 代理服务选择启动账户。很多人直接选内置账户里的 “NT ServiceMSSQLSERVER”,以为默认就行。实际上,内置账户权限受限,后续如果需要跨网络访问、备份到共享文件夹或发送邮件等功能,往往会因权限不足报错。我的做法是单独创建一个本地 Windows 账户,例如 “sqlservice”,赋予它“作为服务登录”的权限,并加入本地的 “Performance Monitor Users” 组。密码一定要记好,否则重启后服务无法启动,数据库就会瘫痪。
排序规则默认是 “SQLLatin1GeneralCP1CIAS”,其中 “CI” 表示不区分大小写,“AS” 表示区分重音。对中文环境基本够用,但如果要处理多语言数据(中文、日文、英文混合),建议改为 “ChinesePRCCIAS”,它对中文字符的支持更好,能避免乱码。我有个客户装好半年后发现中文查询结果顺序不对,排查后发现是排序规则没有设对。修改排序规则只能重建数据库或使用 ALTER DATABASE 命令,生产环境很难停机,所以最好在安装时就一次确定。
说一下安装后的验证步骤。很多人装完就以为万事大吉,结果第二天发现连不上。装完后先做三件事:第一,打开 “SQL Server 配置管理器”,确认数据库引擎服务状态为 “正在运行”,并且 TCP/IP 协议已启用。默认情况下,SQL Server 2016 只启用共享内存协议,不支持远程连接,需要手动开启 TCP/IP 并重启服务。第二,在 Windows 防火墙中放行 1433 端口(默认实例的端口),否则其他电脑无法连接。第三,使用 SQL Server Management Studio(SSMS)尝试连接,连接字符串写成 “localhost,1433” 或 “127.0.0.1,1433”,能连上就说明安装成功。如果连不上,检查服务是否启动、端口是否被占用、防火墙是否拦截。可以在命令行输入 查看端口是否在监听,若没有显示,基本是协议未开启或服务未运行。
SQL Server 2016 的安装说到底是一件需要细致对待的工作。别被花里胡哨的组件和选项迷惑,抓住数据库引擎、服务账户、排序规则和网络配置这几个核心点,一步步来,基本不会出大问题。我的朋友后来按照上述步骤重装了一次,半小时就搞定。他感慨说,早知道这么啰嗦,当初就该多看看文档。其实文档就在那儿,但大多数人只想着赶紧装完,结果反而耽误了更多时间。数据库安装就像盖房子打地基,地基没打好,后面装修再漂亮也住不踏实。


