Bagaimana Anda mengatur ulang kata sandi sa?

22

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, terhubung 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?

Daniel Williams
sumber
Menemukan jawabannya. Saya tidak bisa masuk sebagai admin domain, tetapi menggunakan admin lokal berfungsi dengan baik.
Daniel Williams
Apakah maksud Anda bahwa anggota grup 'Administrator' mesin lokal dapat melakukan ini? Untuk anak cucu, langkah tepat apa yang Anda ambil?
p.campbell
Akun itu adalah akun Administrator lokal itu sendiri. Akun ini adalah bagian dari grup Admin lokal, seperti akun domain saya. Tetapi hanya akun Administrator lokal yang dapat menggunakan otentikasi Windows untuk masuk ke Sql Server. Saya harap itu membantu.
Daniel Williams
memulai instance dalam mode single-user juga akan memungkinkan akun lokal apa pun yang merupakan bagian dari akses grup Administrator lokal ke instance. Sunting: Tautan @ user1419 menunjukkan ini.
Shawn Melton

Jawaban:

10

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 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 bisa 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 ruang 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).

Memecahkan masalah SQL
sumber
9

Apa yang Anda lakukan akan tergantung 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 NT AUTHORITY\SYSTEMakun (atau metode backdoor lainnya). Ada beberapa detail dalam beberapa jawaban di sini:

Saya juga memiliki tip tentang MSSQLTips.com yang membahas 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\SYSTEMdan akan memungkinkan Anda untuk 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 disetel ke Windows saja:

    masukkan deskripsi gambar di sini

  • Tetapkan kata sandi untuk saakun - perluas Keamanan, perluas Login, klik kanan sadan tekan Properti, dan dalam dialog yang dihasilkan akan ada dua bidang entri kata sandi:

    masukkan deskripsi gambar di sini

  • Tambahkan login Anda sendiri sebagaisysadmin - klik kanan Login, Login Baru ... masukkan nama login Anda (dalam formulir DOMAIN\username) kemudian pindah ke tab Peran Server dan centang sysadminkotak dan klik OK:

    masukkan deskripsi gambar di sini

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


Untuk SQL Server 2012 dan contoh yang lebih baru

Dimulai dengan SQL Server 2012, NT Authority\SYSTEMtidak lagi diberikan hak untuk SQL Server secara default. Jadi cara lain untuk melakukannya dalam versi yang lebih baru ini telah 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.exedan ubah nilai HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathto point to SQLCMD.exe, yang akan masuk 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 sysadminmenggunakan 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.exedan mengganti sqlwriter.exe- lebih mudah untuk hanya mengarahkan layanan SQLCMD.exelangsung.


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 memerlukan hak yang lebih tinggi pada host fisik di mana SQL Server berada; seperti yang saya katakan kepada beberapa orang, jika Anda tidak ingin pengembang mengacaukan instalasi SQL Server, jangan menjadikannya administrator.

Aaron Bertrand
sumber
Apakah metode ini memungkinkan saya untuk mengaktifkan akun SA juga? Saya terjebak dalam posisi di mana akun SA saya dinonaktifkan dan saya memiliki grup AD dengan peran Publik. Juga, metode Anda tercantum, apakah saya dapat melakukan langkah-langkah ini tanpa mencatat? Saya bertanya karena server saya berada dalam lingkungan produksi sekarang.
Sean Perkins
1
@ Jadi ya, Anda harus dapat mengaktifkan kembali sa, dan / atau membuat akun auth SQL lain, atau menambahkan pengguna AD Anda (bukan grup!) Secara khusus ke peran yang lebih tinggi. Tidak satu pun dari ini akan memerlukan restart SQL Server (satu-satunya kasus di mana yang diperlukan adalah mengubah antara otentikasi campuran dan hanya Windows).
Aaron Bertrand
Saya mendapatkan kesalahan berikut ketika saya mencoba proses Anda digambarkan. Saya memastikan untuk mengambil tangkapan layar dari satu-satunya akun yang terdaftar juga. Apakah ada perubahan di beberapa titik di SQL 2012 yang tidak akan mengizinkan metode ini? Versi saya saat ini adalah 11.0.3128 . Lebih lanjut, tidak masalah apa pun jenis perubahan yang saya buat, saya akan mendapatkan beberapa variasi kesalahan yang menyatakan bahwa saya tidak memiliki izin. Satu hal terakhir, saya ragu ini membuat perbedaan, tapi saya membuka PowerShell dengan hak Admin, mengeksekusi cmd.exe, lalu psexec -i -s "C: \ ...... smss.exe"! [Kesalahan Pembuatan Akun]! ( i.stack.imgur.com/ITOja.p
Sean Perkins
Gambar terlampir tidak menunjukkan apa-apa sekarang, tetapi memiliki "SA" dan "NT AUTHORITY \ SYSTEM" sebagai satu-satunya akun yang terdaftar. Pesan kesalahan yang saya terima adalah "Pengguna tidak memiliki izin untuk melakukan tindakan ini. (Microsoft SQL Server, Kesalahan: 15247)"
Sean Perkins
@Sean PowerShell? PSExec tidak ada hubungannya dengan PowerShell. Apakah Anda seorang administrator lokal di mesin? Apakah kamu yakin
Aaron Bertrand