Перейти к содержимому
VDS · Windows Server

MS SQL Server на машине

Как поставить MS SQL Server Express на VDS с Windows, ограничить ему память, безопасно открыть доступ и настроить резервные копии.

Обновлено 23 августа 2026 г.

MS SQL Server ставится на VDS с 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="ДлинныйПарольСюда" /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 = 'ДлинныйПароль';
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.

Следите за свободным местом: переполненный диск останавливает базу целиком. Как чистить — в статье Диски и разделы.