Sambungkan ke SQL Server saat administrator sistem dikunci

Berlaku untuk:SQL Server

Artikel ini menjelaskan cara mendapatkan kembali akses ke SQL Server Database Engine sebagai administrator sistem jika Anda telah dikunci. Administrator sistem dapat kehilangan akses ke instans SQL Server karena salah satu alasan berikut:

  • Semua rincian masuk yang merupakan anggota peran server tetap sysadmin telah dihapus secara tidak sengaja.

  • Semua Grup Windows yang merupakan anggota peran server tetap sysadmin telah dihapus secara tidak sengaja.

  • Login yang merupakan anggota peran server tetap sysadmin adalah untuk individu yang telah meninggalkan perusahaan atau yang tidak tersedia.

  • Akun sa dinonaktifkan atau tidak ada yang tahu kata sandi.

Resolusi

Untuk mengatasi masalah akses Anda, kami sarankan Anda memulai instans SQL Server dalam mode pengguna tunggal. Mode ini mencegah terjadinya koneksi lain saat Anda mencoba mendapatkan kembali akses. Dari sini, Anda dapat terhubung ke instans SQL Server dan menambahkan login Anda ke peran server sysadmin . Langkah-langkah terperinci untuk solusi ini disediakan di bagian instruksi langkah demi langkah.

Anda dapat memulai instans SQL Server dalam mode pengguna tunggal dengan -m opsi atau -f dari baris perintah. Setiap anggota grup Administrator lokal komputer kemudian dapat terhubung ke instans SQL Server sebagai anggota peran server tetap sysadmin .

Saat Anda memulai instans dalam mode pengguna tunggal, hentikan layanan SQL Server Agent. Jika tidak, SQL Server Agent mungkin terhubung terlebih dahulu, mengambil satu-satunya koneksi yang tersedia ke server dan memblokir Anda untuk masuk.

Dimungkinkan juga bagi aplikasi klien yang tidak diketahui untuk mengambil satu-satunya koneksi yang tersedia sebelum Anda dapat masuk. Untuk mencegah hal ini terjadi, Anda dapat menggunakan -m opsi diikuti dengan nama aplikasi untuk membatasi koneksi ke satu koneksi dari aplikasi yang ditentukan. Misalnya, memulai SQL Server dengan -mSQLCMD membatasi koneksi ke satu koneksi yang mengidentifikasi dirinya sebagai program klien sqlcmd . Untuk menyambungkan melalui Editor Kueri di Management Studio, gunakan -m"Microsoft SQL Server Management Studio - Query".

Penting

Jangan gunakan -m dengan nama aplikasi sebagai fitur keamanan. Aplikasi klien menentukan nama aplikasi melalui pengaturan string koneksi, sehingga dapat dengan mudah di-spoof dengan nama palsu.

Tabel berikut ini meringkas berbagai cara untuk memulai instans Anda dalam mode pengguna tunggal di baris perintah.

Opsi Deskripsi Waktu menggunakan
-m Membatasi koneksi ke satu koneksi Ketika tidak ada pengguna lain yang mencoba terhubung ke instans, atau Anda tidak yakin dengan nama aplikasi yang Anda gunakan untuk menyambungkan ke instans.
-mSQLCMD Membatasi koneksi ke satu koneksi yang harus mengidentifikasi dirinya sebagai program klien sqlcmd Ketika Anda berencana untuk terhubung ke instans dengan sqlcmd, dan Anda ingin mencegah aplikasi lain mengambil satu-satunya koneksi yang tersedia.
-m"Microsoft SQL Server Management Studio - Query" Membatasi koneksi ke satu koneksi yang harus mengidentifikasi dirinya sebagai Aplikasi Microsoft SQL Server Management Studio - Kueri . Saat Anda berencana untuk menyambungkan ke instans melalui Editor Kueri di Management Studio dan Anda ingin mencegah aplikasi lain mengambil satu-satunya koneksi yang tersedia.
-f Membatasi koneksi ke satu koneksi dan memulai instans dalam konfigurasi minimal Ketika beberapa konfigurasi lain mencegah Anda memulai.

Instruksi langkah demi langkah

Untuk instruksi langkah demi langkah tentang cara memulai SQL Server dalam mode pengguna tunggal, lihat Memulai SQL Server dalam Mode Pengguna Tunggal.

Menggunakan PowerShell

Opsi 1: Jalankan langkah-langkah langsung di buku catatan yang dapat dieksekusi menggunakan Azure Data Studio

Catatan

Sebelum mencoba membuka buku catatan ini, periksa apakah Azure Data Studio diinstal di komputer lokal Anda. Untuk menginstal Azure Data Studio, lihat Mempelajari cara menginstal Azure Data Studio.

Opsi 2: Ikuti langkah secara manual

  1. Buka perintah Windows PowerShell - Jalankan sebagai Administrator

  2. Siapkan nama layanan dan instans SQL Server, dan variabel masuk Windows. Ganti ini dengan nilai agar sesuai dengan lingkungan Anda

    Jika Anda memiliki instans default, gunakan MSSQLSERVER tanpa nama instans.

    $service_name = "MSSQL`$instancename"
    $sql_server_instance = "machine_name\instance"
    $login_to_be_granted_access = "[CONTOSO\PatK]"
    
  3. Hentikan layanan SQL Server sehingga dapat dimulai ulang dengan mode pengguna tunggal, menggunakan perintah berikut:

    Jika Anda memiliki instans default, gunakan MSSQLSERVER tanpa nama instans.

    net stop $service_name
    
  4. Sekarang mulai instans SQL Server Anda dalam mode pengguna tunggal dan hanya izinkan SQLCMD.exe untuk terhubung (/mSQLCMD)

    Catatan

    Pastikan untuk menggunakan huruf besar SQLCMD

    Jika Anda memiliki instans default, gunakan MSSQLSERVER tanpa nama instans.

    net start $service_name /f /mSQLCMD
    
  5. Menggunakan sqlcmd jalankan perintah CREATE LOGIN diikuti dengan perintah ALTER SERVER ROLE. Langkah ini mengasumsikan Anda telah masuk ke Windows dengan akun yang merupakan anggota grup Administrator Lokal. Ini mengasumsikan Anda telah mengganti domain dan nama login dengan kredensial yang ingin Anda berikan keanggotaan sysadmin.

    Jika Anda memiliki instans default, gunakan nama server.

    sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN $login_to_be_granted_access FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER $login_to_be_granted_access; "
    

    Catatan

    Jika Anda menerima kesalahan berikut, Anda harus memastikan tidak ada SQLCMD lain yang tersambung ke SQL Server:
    Sqlcmd: Error: Microsoft ODBC Driver X for SQL Server : Login failed for user 'CONTOSO\BobD'. Reason: Server is in single user mode. Only one administrator can connect at this time..

  6. Mode Campuran (opsional): Jika SQL Server Anda berjalan dalam mode autentikasi campuran, Anda juga dapat:

    1. Berikan keanggotaan peran sysadmin ke login SQL. Jalankan kode seperti berikut untuk membuat login autentikasi SQL Server baru yang merupakan anggota peran server tetap sysadmin . Ganti ?j8:z$G=JE9 dengan kata sandi yang kuat pilihan Anda.

      Jika Anda memiliki instans default, gunakan nama server.

      $strong_password = "j8:zG=J?E9"
      sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN TempLogin WITH PASSWORD = '$strong_password'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin; "
      
    2. Selain itu, jika SQL Server Anda berjalan dalam mode autentikasi campuran dan Anda ingin mengatur ulang kata sandi akun sa yang diaktifkan. Ubah kata sandi akun sa dengan sintaks berikut. Pastikan untuk mengganti j8:zG=J?E9 dengan kata sandi yang kuat dari pilihan Anda:

      Jika Anda memiliki instans default, gunakan nama server.

      $strong_password = "j8:zG=J?E9"
      sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
      
  7. Menghentikan dan memulai ulang instans SQL Server Anda dalam mode multi-pengguna

    Jika Anda memiliki instans default, gunakan MSSQLSERVER tanpa nama instans.

    net stop $service_name
    net start $service_name
    

Menggunakan SQL Server Configuration Manager dan Management Studio (SSMS)

Instruksi ini mengasumsikan:

  • SQL Server berjalan pada Windows 8 atau yang lebih tinggi. Sedikit penyesuaian untuk versi SQL Server atau Windows yang lebih lama disediakan jika berlaku.

  • SQL Server Management Studio diinstal di komputer.

Lakukan instruksi ini saat masuk ke Windows sebagai anggota grup administrator lokal.

  1. Dari menu Mulai Windows, klik kanan ikon untuk Pengelola Konfigurasi SQL Server dan pilih Jalankan sebagai administrator untuk meneruskan kredensial administrator Anda ke Configuration Manager.

  2. Di SQL Server Configuration Manager, di panel kiri, pilih SQL Server Services. Di panel kanan, temukan instans SQL Server Anda. (Instans default SQL Server mencakup (MSSQLSERVER) setelah nama komputer. Instans bernama muncul dalam huruf besar dengan nama yang sama dengan yang mereka miliki di Server Terdaftar.) Klik kanan instans SQL Server, lalu pilih Properti.

  3. Pada tab Parameter Startup, dalam kotak Tentukan parameter startup, ketik -m lalu pilih Tambahkan. (Itu tanda hubung kemudian huruf kecil m.)

    Untuk beberapa versi SQL Server sebelumnya, tidak ada tab Parameter Startup. Dalam hal ini, pada tab Tingkat Lanjut , klik dua kali Parameter Startup. Parameter terbuka di jendela kecil. Berhati-hatilah untuk tidak mengubah parameter yang ada. Di bagian paling akhir, tambahkan parameter ;-m baru lalu pilih OK. (Itu titik koma lalu tanda hubung kemudian huruf kecil m.)

  4. Pilih OK, dan setelah pesan dimulai ulang, klik kanan nama server Anda, lalu pilih Mulai ulang.

  5. Setelah SQL Server dimulai ulang, server Anda akan berada dalam mode pengguna tunggal. Pastikan bahwa SQL Server Agent tidak berjalan. Jika dimulai, itu akan mengambil satu-satunya koneksi Anda.

  6. Dari menu Mulai Windows, klik kanan ikon untuk Management Studio dan pilih Jalankan sebagai administrator. Ini meneruskan kredensial administrator Anda ke SSMS.

    Untuk versi Windows yang lebih lama, opsi Jalankan sebagai administrator muncul sebagai submenu.

    Dalam beberapa konfigurasi, SSMS mencoba membuat beberapa koneksi. Beberapa koneksi akan gagal karena SQL Server berada dalam mode pengguna tunggal. Berdasarkan skenario Anda, lakukan salah satu tindakan berikut.

    1. Sambungkan dengan Object Explorer menggunakan Autentikasi Windows, yang menyertakan kredensial Administrator Anda. Perluas Keamanan, perluas Login, dan klik dua kali login Anda sendiri. Pada halaman Peran Server, pilih sysadmin, lalu pilih OK.

    2. Alih-alih menyambungkan dengan Object Explorer, sambungkan dengan Jendela Kueri menggunakan Autentikasi Windows (yang menyertakan kredensial Administrator Anda). (Anda hanya dapat menyambungkan dengan cara ini jika Anda tidak tersambung dengan Object Explorer.) Jalankan kode seperti berikut untuk menambahkan login Autentikasi Windows baru yang merupakan anggota peran server tetap sysadmin . Contoh berikut menambahkan pengguna domain bernama CONTOSO\PatK.

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
      
    3. Jika SQL Server Anda berjalan dalam mode autentikasi campuran, sambungkan dengan Jendela Kueri menggunakan Autentikasi Windows (yang menyertakan kredensial Administrator Anda). Jalankan kode seperti berikut untuk membuat login autentikasi SQL Server baru yang merupakan anggota peran server tetap sysadmin .

      CREATE LOGIN TempLogin WITH PASSWORD = '************';
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
      

      Peringatan

      Ganti ********** dengan kata sandi yang kuat.

    4. Jika SQL Server Anda berjalan dalam mode autentikasi campuran dan Anda ingin mengatur ulang kata sandi akun sa , sambungkan dengan Jendela Kueri menggunakan Autentikasi Windows (yang menyertakan kredensial Administrator Anda). Ubah kata sandi akun sa dengan sintaks berikut.

      ALTER LOGIN sa WITH PASSWORD = '************';
      

      Peringatan

      Ganti ********** dengan kata sandi yang kuat.

  7. Tutup Studio Manajemen.

  8. Beberapa langkah berikutnya ini mengubah SQL Server kembali ke mode multi-pengguna. Di SQL Server Configuration Manager, di panel kiri, pilih SQL Server Services.

  9. Di panel kanan, klik kanan instans SQL Server, lalu pilih Properti.

  10. Pada tab Parameter Startup, dalam kotak Parameter yang ada, pilih -m lalu pilih Hapus.

    Untuk beberapa versi SQL Server sebelumnya, tidak ada tab Parameter Startup. Dalam hal ini, pada tab Tingkat Lanjut , klik dua kali Parameter Startup. Parameter terbuka di jendela kecil. ;-m Hapus yang Anda tambahkan sebelumnya, lalu pilih OK.

  11. Klik kanan nama server Anda, lalu pilih Mulai Ulang. Pastikan untuk memulai SQL Server Agent lagi jika Anda menghentikannya sebelum memulai SQL Server dalam mode pengguna tunggal.

Sekarang Anda harus dapat terhubung secara normal dengan salah satu akun yang sekarang menjadi anggota peran server tetap sysadmin .

Baca juga