Memulihkan database master di Linux dalam mode pengguna tunggal
Berlaku untuk: SQL Server - Linux
Dalam keadaan tertentu, Anda mungkin perlu memulihkan master
database pada instans SQL Server dalam mode pengguna tunggal di Linux. Skenario termasuk migrasi ke instans baru, atau memulihkan dari inkonsistensi.
Catatan
SQL Server akan secara otomatis dimatikan setelah pemulihan selesai. Perilaku ini secara desain.
Untuk memulihkan master
database, Anda harus memulai SQL Server dalam mode pengguna tunggal, dengan menggunakan opsi -m
startup dari baris perintah.
Untuk memulai instans SQL Server dalam mode pengguna tunggal di Windows, lihat Mode pengguna tunggal untuk SQL Server.
Prasyarat
Memulai SQL Server dalam mode pengguna tunggal memungkinkan setiap anggota grup administrator lokal untuk terhubung ke SQL Server sebagai anggota peran server tetap sysadmin . Untuk informasi selengkapnya, lihat Menyambungkan ke SQL Server saat administrator sistem dikunci.
Saat Anda memulai instans SQL Server dalam mode pengguna tunggal:
- Hanya satu pengguna yang dapat tersambung ke server.
- Proses
CHECKPOINT
tidak dijalankan. Secara default, ini berjalan secara otomatis saat startup.
Menghentikan layanan SQL Server
Perintah berikut menghentikan instans SQL Server jika saat ini sedang berjalan:
systemctl stop mssql-server
Ubah pengguna saat ini menjadi mssql
SQL Server di Linux berjalan di
mssql
bawah pengguna, jadi Anda perlu beralih ke pengguna ini terlebih dahulu. Anda dimintairoot
kata sandi saat menjalankan perintah ini.su mssql
Memulai SQL Server dalam mode pengguna tunggal
Saat Anda menggunakan
-m
opsi denganSQLCMD
, Anda dapat membatasi koneksi ke aplikasi klien tertentu (SQLCMD
harus dikapitalisasi seperti yang ditunjukkan):/opt/mssql/bin/sqlservr -m"SQLCMD"
Dalam contoh sebelumnya,
-m"SQLCMD"
membatasi koneksi ke satu koneksi dan koneksi tersebut harus mengidentifikasi dirinya sebagai program klien sqlcmd . Gunakan opsi ini saat Anda memulai SQL Server dalam mode pengguna tunggal untuk memulihkanmaster
database.Ketika SQL Server dimulai, SQL Server menghasilkan beberapa entri log. Anda dapat mengonfirmasi bahwa ini berjalan dalam mode pengguna tunggal dengan mencari baris berikut dalam output:
[...] 2022-05-24 04:26:27.24 Server Command Line Startup Parameters: -m "SQLCMD" [...] 2022-05-24 04:26:28.20 spid8s Warning ****************** 2022-05-24 04:26:28.21 spid8s SQL Server started in single-user mode. This an informational message only. No user action is required.
Menyambungkan ke instans SQL Server
Gunakan sqlcmd untuk menyambungkan ke instans SQL Server:
/opt/mssql-tools/bin/sqlcmd -S <ServerName> -U sa -P <StrongPassword>
Dalam contoh sebelumnya,
<ServerName>
adalah nama host yang menjalankan SQL Server jika Anda tersambung dari jarak jauh. Jika Anda terhubung langsung di host tempat SQL Server berjalan, Anda dapat melewati parameter ini, atau menggunakanlocalhost
.<StringPassword>
adalah kata sandi untuk akun SA .
master
Memulihkan database
Jalankan perintah berikut di dalam sqlcmd. Ingatlah bahwa sqlcmd mengharapkan
GO
di akhir skrip untuk mengeksekusinya.use [master]; RESTORE DATABASE [master] FROM DISK = N'/var/opt/mssql/data/master.bak' WITH FILE=1, MOVE N'master' to N'/var/opt/mssql/data/master.mdf', MOVE N'mastlog' to N'/var/opt/mssql/data/mastlog.ldf', NOUNLOAD, REPLACE, STATS=5; GO
Dalam contoh sebelumnya, jalur ke
master
file cadangan database adalah/var/opt/mssql/data/master.bak
. Anda harus mengganti nilai ini dengan jalur yang benar ke file cadangan database Andamaster
.Anda akan melihat output yang mirip dengan contoh berikut, jika pemulihan berhasil.
Processed 456 pages for database 'master', file 'master' on file 1. Processed 5 pages for database 'master', file 'mastlog' on file 1. The master database has been successfully restored. Shutting down SQL Server. SQL Server is terminating this process.
Memulai ulang layanan SQL Server
Untuk memulai ulang SQL Server, jalankan perintah berikut.
systemctl start mssql-server
Keterangan
Saat Anda memulihkan master
cadangan database, database pengguna yang sudah ada yang ditambahkan ke instans setelah cadangan diambil, tidak akan terlihat setelah memulihkan master
. File masih harus ada di lapisan penyimpanan, jadi Anda perlu memasang kembali file database pengguna tersebut secara manual untuk membuat database tersebut online. Untuk informasi selengkapnya, lihat Melampirkan Database.