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:

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:

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:

(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 :
- Jika layanan SQL VSS Writer sedang berjalan, hentikan, dan tunda semua paket perawatan atau perangkat lunak cadangan pihak ketiga yang mungkin mengandalkannya.
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];"
Cobalah untuk memulai layanan SQL VSS Writer lagi (Anda akan mendapatkan kesalahan; tidak apa-apa).
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.