在 VPS 上运行 MS SQL Server
如何在 Windows VPS 上安装 MS SQL Server Express,限制其内存占用,安全地开放访问,并配置备份。
更新于 2026年8月23日
MS SQL Server 在 Windows Server 的 VPS 上像普通应用程序一样安装。对许多场景来说,免费的 Express 版就足够了:限制是每个数据库 10 GB、引擎内存 1410 MB、最多四个核心。
配置要求
Windows Server 本身就要占用约 2 GB 内存。再加上数据库引擎和您的应用程序:VDS-1 和 VDS-2 对于 Windows + MS SQL 组合来说太局促了,可用的最低配置是 VDS-3(4 核 / 8 GB / 120 GB),而对于负载较高的数据库,请选择 VDS-4 及更高配置。VDS-3 上写入上限为 240 MB/s 的 NVMe 磁盘对数据库来说足够了。
安装
从 Microsoft 网站下载 SQL Server Express 安装程序,然后运行静默安装:
.\SQLEXPR_x64_ENU.exe /q /ACTION=Install /FEATURES=SQLEngine /INSTANCENAME=SQLEXPRESS `
/SQLSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" /SQLSYSADMINACCOUNTS="BUILTIN\Administrators" `
/SECURITYMODE=SQL /SAPWD="LongPasswordHere" /TCPENABLED=1 /IACCEPTSQLSERVERLICENSETERMS
另外安装命令行工具(sqlcmd)和 SQL Server Management Studio,如果您要通过界面操作的话。
检查:
Get-Service MSSQL$SQLEXPRESS
sqlcmd -S .\SQLEXPRESS -Q "select @@version"
内存与核心
默认情况下,引擎会占用所有可用内存,系统会因此受影响。请显式限制它,至少给 Windows 留出 2 GB:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 4096; RECONFIGURE;
对于 VDS-3(8 GB),合理的值是 4096;对于 VDS-5(24 GB),是 16384。
访问
您绝不能将 1433 端口对外开放。可选方案:
- 应用程序运行在同一台机器上——让数据库保持在 localhost,完全不创建防火墙规则;
- 需要外部访问——只对您的地址开放端口:
New-NetFirewallRule -DisplayName "MSSQL" -Direction Inbound -Protocol TCP -LocalPort 1433 `
-RemoteAddress 203.0.113.5 -Action Allow
最好禁用 sa 账户,改为创建一个仅对您的数据库有权限的具名用户:
CREATE LOGIN app WITH PASSWORD = 'LongPassword';
CREATE DATABASE shop;
USE shop; CREATE USER app FOR LOGIN app;
ALTER ROLE db_owner ADD MEMBER app;
ALTER LOGIN sa DISABLE;
备份
我们没有自动机器备份,面板中也没有状态快照——数据库备份需要您自己完成。在计划程序中创建一个任务,每天一次:
sqlcmd -S .\SQLEXPRESS -Q "BACKUP DATABASE shop TO DISK='C:\backup\shop.bak' WITH INIT, COMPRESSION"
Express 版不支持压缩——请删除 COMPRESSION。务必把生成的文件从机器上取走:如果磁盘丢失,放在数据库旁边的副本救不了您。
至少每季度检查一次恢复:从未被恢复过的备份不算备份。
常见错误
- 未启用 TCP/IP 协议。 默认情况下,Express 只监听命名管道。请在 SQL Server Configuration Manager 中启用它,然后重启服务。
- 具名实例使用动态端口。 请显式设置为 1433,否则防火墙规则会失效。
- 数据库增长到 10 GB 后停止接受写入。 这是 Express 的限制;超过这个限制就需要换用其他版本或清理数据。
- 忘记事务日志。 在完整恢复模式下,
.ldf文件会不断增长,直到占满磁盘。要么备份日志,要么切换到简单模式。
请留意可用空间:磁盘占满会导致数据库完全停止。清理方法请参阅文章磁盘与分区。