Bagikan melalui


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

  1. Perintah berikut menghentikan instans SQL Server jika saat ini sedang berjalan:

    systemctl stop mssql-server
    

Ubah pengguna saat ini menjadi mssql

  1. SQL Server di Linux berjalan di mssql bawah pengguna, jadi Anda perlu beralih ke pengguna ini terlebih dahulu. Anda dimintai root kata sandi saat menjalankan perintah ini.

    su mssql
    

Memulai SQL Server dalam mode pengguna tunggal

  1. Saat Anda menggunakan -m opsi dengan SQLCMD, 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 memulihkan master database.

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

  1. 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 menggunakan localhost. <StringPassword> adalah kata sandi untuk akun SA .

master Memulihkan database

  1. 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 Anda master .

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

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