MS SQL Server на VPS
Як встановити MS SQL Server Express на Windows VPS, обмежити його пам'ять, безпечно відкрити доступ і налаштувати бекапи.
Оновлено 23 серпня 2026 р.
MS SQL Server встановлюється на VPS з Windows Server як звичайний застосунок. Безкоштовної редакції Express вистачає багатьом: обмеження — 10 ГБ на базу даних, 1410 МБ пам'яті для рушія та до чотирьох ядер.
Вимоги до тарифу
Сам Windows Server займає близько 2 ГБ пам'яті. Додайте до цього рушій бази даних і ваш застосунок: VDS-1 і VDS-2 затісні для зв'язки Windows + MS SQL, робочий мінімум — VDS-3 (4 ядра / 8 ГБ / 120 ГБ), а для навантаженої бази беріть VDS-4 і вище. Диск NVMe зі стелею запису 240 МБ/с на VDS-3 цілком підходить для бази даних.
Встановлення
Завантажте інсталятор SQL Server Express із сайту Microsoft і запустіть тихе встановлення:
.\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 ГБ:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 4096; RECONFIGURE;
Для VDS-3 (8 ГБ) розумне значення — 4096; для VDS-5 (24 ГБ) — 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 ГБ і перестала приймати записи. Це обмеження Express; далі потрібна інша редакція або очищення даних.
- Забутий журнал транзакцій. У моделі відновлення Full файл
.ldfзростає, доки не з'їсть диск. Або робіть резервну копію журналу, або перейдіть на Simple.
Стежте за вільним місцем: переповнений диск повністю зупиняє базу даних. Про те, як прибирати, дивіть статтю Диски та розділи.