it-swarm-id.com

Bagaimana Anda mengatur ulang kata sandi sa?

Saya kehilangan kata sandi sa pada mesin, dan ketika saya masuk ke mesin secara langsung menggunakan akun di grup admin, SQL Server Management Studio tidak akan mengizinkan saya untuk masuk menggunakan otentikasi Windows.

Rencana saya adalah cukup login ke server, sambungkan melalui Windows Authentication, dan reset sa untuk menggunakan kata sandi baru. Karena saya tidak dapat terhubung melalui Otentikasi Windows, ini tidak akan berfungsi.

Bagaimana lagi saya bisa mengatur ulang kata sandi sa?

22
Daniel Williams

Anda dapat mengikuti langkah-langkah yang disebutkan dalam tautan di bawah ini untuk mengatur ulang kata sandi SA:

Langkah-langkah yang dirangkum di bawah ini:

  1. Buka SQL Server Configuration Manager dari Start Menu> Programs> Microsoft SQL Server 20xx> Configuration Tools> yang relevan dengan versi terbaru dari SQL Server yang telah Anda instal (mis. Jika Anda sudah menginstal 2005 dan 2012, gunakan versi 2012). Tidak punya Menu Mulai? Pada layar Mulai Windows 8, mulai ketikkan SQL Server Con ... sampai muncul.
  2. Hentikan instance SQL Server yang harus Anda pulihkan dengan mengklik kanan instance di SQL Server Services dan memilih "Stop"
  3. Klik kanan contoh yang baru saja Anda hentikan, klik Properti, dan di tab "Advanced", di kotak teks Properties tambahkan "; –m" ke akhir daftar di opsi "Parameter startup" (pada versi yang lebih baru, Anda dapat langsung ke tab "Parameter Startup", ketik "-m" dan klik Tambah, tanpa khawatir tentang sintaks, semi-kolon, atau apa pun).
  4. Klik tombol "OK", dan mulai kembali SQL Server Instance
  5. Setelah SQL Server Instance dimulai dalam mode pengguna tunggal, akun Administrator Windows dapat terhubung ke SQL Server menggunakan utilitas sqlcmd menggunakan otentikasi Windows. Anda dapat menggunakan perintah Transact-SQL seperti "sp_addsrvrolemember" untuk menambahkan login yang ada (atau yang baru dibuat) ke peran server sysadmin.

Contoh berikut menambahkan akun "Buck" di domain "CONTOSO" ke peran sysadmin:

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

Setelah akses sysadmin telah dipulihkan, hapus "; -m" dari parameter startup menggunakan Manajer Konfigurasi dan restart contoh SQL Server sekali lagi.

CATATAN: pastikan tidak ada spasi antara “;” dan "-m", parser parameter registri sensitif terhadap kesalahan ketik tersebut. Anda akan melihat entri dalam file ERRORLOG SQL Server yang mengatakan "SQL Server dimulai dalam mode pengguna tunggal."


Sumber daya tambahan:

Pada akhirnya, Anda selalu dapat menyalin file database ke instance lain, atau bahkan menginstal ulang SQL Server (menambahkan akun lokal sebagai sysadmin selama proses itu).

10

Apa yang Anda lakukan akan bergantung pada versi SQL Server Anda, serta apakah Anda mampu menurunkan layanan SQL Server untuk membangun kredensial baru. Dua metode pertama di sini tidak perlu memulai kembali instance:


Untuk contoh SQL Server 2005, 2008, dan 2008 R2

Anda dapat terhubung menggunakan akun NT AUTHORITY\SYSTEM (Atau metode backdoor lainnya). Ada beberapa detail dalam beberapa jawaban di sini:

Saya juga memiliki tip tentang MSSQLTips.com yang mengatasi masalah ini:

Pada dasarnya, Anda mengunduh PSExec dari Microsoft, lalu menggunakannya untuk meluncurkan Management Studio setelah Anda menginstalnya:

PsExec -s -i "C:\...\Ssms.exe"

Ini akan terhubung sebagai NT AUTHORITY\SYSTEM Dan akan memungkinkan Anda melakukan hal-hal di Object Explorer, seperti:

  • Ubah instance ke mode SQL Server dan Windows Authentication - klik kanan nama Server, tekan properti, dan ubah tombol radio jika saat ini diatur ke Windows hanya:

    enter image description here

  • Tetapkan kata sandi untuk akun sa - rentangkan Keamanan, perluas Login, klik kanan sa dan tekan Properties, dan dalam dialog yang dihasilkan akan ada dua bidang entri kata sandi:

    enter image description here

  • Tambahkan login Anda sendiri sebagai sysadmin - klik kanan Login, Login Baru ... masukkan nama login Anda (dalam bentuk DOMAIN\username) Kemudian pindah ke tab Server Roles dan centang kotak sysadmin dan klik OK:

    enter image description here

  • (atau, jika login Anda sudah terdaftar, klik kanan, Properties, dan pastikan sysadmin dicentang di bawah Peran Server)


Untuk SQL Server 2012 dan contoh yang lebih baru

Dimulai dengan SQL Server 2012, NT Authority\SYSTEM Tidak lagi diberikan hak untuk SQL Server secara default. Jadi cara lain untuk melakukannya dalam versi yang lebih baru ini adalah dirinci oleh Argenis Fernandez :

  1. Jika layanan SQL VSS Writer sedang berjalan, hentikan, dan tunda semua paket perawatan atau perangkat lunak cadangan pihak ketiga yang mungkin mengandalkannya.
  2. Buka regedit.exe Dan ubah nilai HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath Untuk menunjuk ke SQLCMD.exe, Yang akan berada di C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. Setelah diedit, nilai registri akan terlihat seperti berikut (maaf untuk pengguliran):

    "C:Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.exe" -S .\instancename -E -Q "ALTER ROLE sysadmin ADD MEMBER [YourDomain\YourUserName];"
    
  3. Cobalah untuk memulai layanan SQL VSS Writer lagi (Anda akan mendapatkan kesalahan; tidak apa-apa).

  4. Anda sekarang harus dapat terhubung sebagai sysadmin menggunakan YourDomain\YourUserName. Jadi hentikan layanan SQL VSS Writer, perbaiki registri, dan mulai ulang layanan (jika Anda perlu menjalankannya, atau jika sudah berjalan sebelum Anda memulai ini).

Saya telah membahas hal ini secara lebih rinci dalam tip kedua:

Meskipun ketika saya menulis tip itu, saya menggunakan pendekatan yang lebih rumit untuk membuat salinan SQLCMD.exe Dan mengganti sqlwriter.exe - lebih mudah untuk langsung menunjuk layanan di SQLCMD.exe Secara langsung.


Jika Anda mampu mengambil layanan SQL Server

Ada jalur yang didukung secara resmi dari Microsoft yang mengharuskan memulai kembali instance dalam mode pengguna tunggal:

Ada juga fungsi di dbatools.io , solusi Powershell untuk mengelola SQL Server, yang disebut Reset-DbaAdmin:


Keamanan bukanlah masalah utama di sini

Saya melihat banyak orang yang meminta Microsoft untuk "memperbaiki" apa yang disebut "kerentanan" ini. Ini adalah pendekatan yang valid untuk memulihkan akses ke contoh SQL Server yang Anda miliki. Mereka semua membutuhkan hak yang lebih tinggi pada Host fisik tempat SQL Server berada; seperti yang saya katakan kepada beberapa orang, jika Anda tidak ingin pengembang mengacaukan instalasi SQL Server, jangan buat mereka administrator.

9
Aaron Bertrand