Skip to content
VDS · Windows Server

MS SQL Server di VPS

Cara memasang MS SQL Server Express di VPS Windows, membatasi memorinya, membuka akses dengan aman, dan menyiapkan backup.

Diperbarui 23 Agustus 2026

MS SQL Server dipasang di VPS dengan Windows Server seperti aplikasi biasa. Edisi Express yang gratis sudah cukup untuk banyak kasus: batasannya 10 GB per database, 1410 MB memori untuk engine, dan maksimal empat core.

Persyaratan tier

Windows Server sendiri memakan sekitar 2 GB memori. Tambahkan engine database dan aplikasi Anda ke situ: VDS-1 dan VDS-2 terlalu sempit untuk kombinasi Windows + MS SQL, minimum yang layak adalah VDS-3 (4 core / 8 GB / 120 GB), dan untuk database yang sibuk ambil VDS-4 ke atas. Disk NVMe dengan batas tulis 240 MB/s pada VDS-3 sudah memadai untuk database.

Instalasi

Unduh installer SQL Server Express dari situs Microsoft dan jalankan instalasi senyap:

.\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

Pasang secara terpisah alat command-line (sqlcmd) dan SQL Server Management Studio jika Anda akan bekerja melalui antarmuka.

Periksa:

Get-Service MSSQL$SQLEXPRESS
sqlcmd -S .\SQLEXPRESS -Q "select @@version"

Memori dan core

Secara default, engine mengambil semua memori yang tersedia, dan sistem jadi terhambat. Batasi secara eksplisit, sisakan setidaknya 2 GB untuk Windows:

EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 4096; RECONFIGURE;

Untuk VDS-3 (8 GB), nilai yang wajar adalah 4096; untuk VDS-5 (24 GB), 16384.

Akses

Anda tidak boleh membuka port 1433 ke luar. Pilihannya:

  • aplikasi berjalan di mesin yang sama — biarkan database di localhost dan jangan buat aturan firewall sama sekali;
  • Anda butuh akses eksternal — buka port hanya untuk alamat Anda:
New-NetFirewallRule -DisplayName "MSSQL" -Direction Inbound -Protocol TCP -LocalPort 1433 `
  -RemoteAddress 203.0.113.5 -Action Allow

Sebaiknya nonaktifkan akun sa, dan buat pengguna bernama dengan hak hanya ke database Anda:

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;

Backup

Kami tidak menyediakan backup mesin otomatis, maupun snapshot state di panel — Anda membuat backup database sendiri. Sebuah tugas di scheduler, sekali sehari:

sqlcmd -S .\SQLEXPRESS -Q "BACKUP DATABASE shop TO DISK='C:\backup\shop.bak' WITH INIT, COMPRESSION"

Kompresi tidak tersedia di Express — hapus COMPRESSION. Pastikan untuk memindahkan file hasilnya keluar dari mesin: salinan di samping database tidak akan menyelamatkan Anda jika disk hilang.

Periksa pemulihan setidaknya sekali per kuartal: backup yang belum pernah dipulihkan tidak dihitung sebagai backup.

Kesalahan umum

  • Protokol TCP/IP tidak diaktifkan. Secara default, Express hanya mendengarkan pada named pipe. Aktifkan di SQL Server Configuration Manager, lalu restart layanannya.
  • Port dinamis untuk named instance. Setel 1433 secara eksplisit, jika tidak aturan firewall akan meleset.
  • Database tumbuh sampai 10 GB dan berhenti menerima penulisan. Ini batas Express; di luar itu Anda perlu edisi lain atau pembersihan data.
  • Transaction log yang terlupakan. Dalam model pemulihan Full, file .ldf tumbuh sampai menghabiskan disk. Entah backup log-nya atau beralih ke Simple.

Pantau ruang kosong: disk yang penuh menghentikan database sepenuhnya. Untuk cara membersihkannya, lihat artikel Disk dan partisi.