it-swarm.asia

Cara menambahkan sysadmin ke pengguna di SQL Server 2008 ketika tidak ada akun sysadmin

Saya memiliki contoh SQL server 2008 yang berjalan. Sayangnya selama pengujian saya membatalkan hak sysadmin untuk login saya dan sekarang tidak dapat membacanya (karena saya tidak memiliki hak sysadmin).

Tidak ada akun sysadmin lain untuk instance kecuali SA.

Saya hanya diatur untuk Otentikasi Windows jadi saya meretas LoginMode di registri menjadi 2 sehingga saya bisa masuk sebagai SA menggunakan Sql Authentication. Ini memang mengatur mode login ke Mixed, namun the = SA pengguna dinonaktifkan secara default dan saya tidak dapat mengaktifkannya kembali karena saya tidak memiliki hak sysadmin.

Bagaimana cara mengaktifkan login SA agar saya dapat masuk dan menugaskan kembali sysadmin ke akun normal saya? Apakah ada pengaturan registri untuk ini juga atau disimpan dalam database master?

25
Mark D Jackson

Bahkan jenis koneksi yang paling uber-admin opsi Koneksi Administrator Khusus ( DAC ), yang hanya dapat digunakan sebagai koneksi lokal, dan memungkinkan Anda membatalkan semua jenis jahat, masih membutuhkan kredensial masuk. Jadi saya tidak berpikir ada cara resmi untuk melakukan ini.

Cara tercepat untuk menghidupkan kembali sistem ini mungkin dengan mematikan SQL Server, menyalin file basis data pengguna di tempat yang aman, mencopot, instal ulang (pastikan untuk mengemas paket layanan setidak-tidaknya pada tingkat sebelumnya), salin kembali file dan lampirkan basis data. (Tidak yakin penyalinan kembali/diperlukan, tetapi hanya untuk aman ...).

Anda masih harus memulihkan objek tingkat server secara manual (mis. Login)

11

Backdoor aktual ke SQL Server memang ada yang tidak memerlukan restart dan/atau me-reboot apa pun ke mode single-user. Saya telah melakukan ini pada sistem di mana saya tidak memiliki akses tetapi perlu memeriksa barang-barang.

Unduh alat PSexec dari di sini . Letakkan ini di server dan kemudian dalam perintah Prompt jalankan perintah ini: psexec -i -s SSMS.exe, atau sqlwb.exe

Ini akan membuka SSMS sebagai akun sistem yang memiliki akses sysadmin ke instance dari SQL Server. Ini dilakukan selama instalasi SQL Server, namun saya telah mendengar bahwa ini tidak akan terjadi dengan SQL 2012.

27
user507

SQL Server 2008 berbeda dari SQL Server 2005, dalam hal itu administrator lokal tidak lagi mewarisi peran server tetap sysadmin.

Ketika SQL Server 2008 diinstal, ia meminta Anda untuk menunjuk akun yang akan ditambahkan ke peran sysadmin. Namun, jika Anda menerima kotak setelah perangkat lunak diinstal, ini tidak banyak membantu Anda.

Untungnya, Microsoft mempertahankan fungsi 2005 ketika SQL Server berjalan dalam mode pengguna tunggal. Inilah yang Anda lakukan:

  • masuk ke server sebagai admin windows lokal
  • hentikan sql server
  • pada command Prompt, di direktori di mana sqlservr.exe berada, ketik sqlservr.exe -m, dan tekan enter - ini akan memulai SQL Server dalam mode single-user
  • buka SQL Server EM, dan tambahkan akun Anda ke peran server tetap sysadmin
  • hentikan sql server, mulai ulang (pada baris perintah atau dalam SQL Server EM
14
Brian Sullivan

Ini adalah pertanyaan yang bagus dan seseorang akan berada dalam situasi ini dan membutuhkan penyelamatan darinya ..

Semua kredit diberikan ke codykonior

Jika Anda seorang Administrator Windows pada server maka Anda dapat menggunakan skrip PowerShell v2 untuk mendapatkan akses tanpa pemadaman dan tanpa risiko yang diketahui. Itu melakukan ini dengan menduplikasi token masuk dari layanan SQL Server bahkan jika itu berjalan di bawah akun layanan AD, akun virtual, atau dilindungi dengan SID per layanan

Skrip di bawah ini akan mengulangi layanan SQL Server dan akan menambahkan Anda ke peran sysadmin di mana pun Anda hilang:

#GITHUB Link : https://github.com/codykonior/HackSql
$userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

$services = Get-Service | Where { ($_.Name -eq 'MSSQLSERVER' -or $_.Name -like 'MSSQL$*') -and $_.Status -eq "Running" }
foreach ($service in $services) {
    if ($service.Name -eq "MSSQLSERVER") {
        $sqlName = ".\"
    } else {
        $sqlName = ".\$($service.Name.Substring(6))"
    }

    Write-Host "Attempting $sqlName"
    $serviceProcess = Get-WmiObject -Class Win32_Service -Filter "Name = '$($service.Name)'"

    Invoke-TokenManipulation -ProcessId $serviceProcess.ProcessID -ImpersonateUser | Out-Null
    $impersonatedUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    Write-Host "Service $($service.Name) on PID $($serviceProcess.ProcessID) will connect to $sqlName as $impersonatedUser"

    $sqlConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlName;Trusted_Connection=True")
    $sqlConnection.Open()
    $sqlCommand = New-Object System.Data.SqlClient.SqlCommand("If Not Exists (Select Top 1 0 From sys.server_principals Where name = '$userName')
Begin
    Create Login [$userName] From Windows
End

If Not Exists (Select Top 1 0 From master.sys.server_principals sp Join master.sys.server_role_members srp On sp.principal_id = srp.member_principal_id Join master.sys.server_principals spr On srp.role_principal_id = spr.principal_id Where sp.name = '$userName' And spr.name = 'sysadmin')
Begin
    Exec sp_addsrvrolemember '$userName', 'sysadmin'
End", $sqlConnection)
    $sqlCommand.ExecuteNonQuery() | Out-Null
    $sqlConnection.Close()
    Invoke-TokenManipulation -RevToSelf | Out-Null
}
5
Kin Shah

Anda masih dapat membuat login dengan akses 'sysadmin'. Terima kasih kepada Principal Data Engineer di Microsoft (Saleem Hakani) yang menulis di bawah ini Tips & Trick SQL Server.

Saya menemukan ini ketika saya terjebak dalam keadaan yang sama ketika saya lupa kata sandi sa untuk mesin uji saya.

Tautan: https://blogs.technet.Microsoft.com/sqlman/2011/06/14/tips-tricks-you-have-lost-access-to-sql-server-now-what/ =

Inilah langkah-langkah yang perlu Anda lakukan:

  1. Mulai contoh SQL Server menggunakan mode pengguna tunggal (atau konfigurasi minimal yang juga akan menempatkan SQL Server dalam mode pengguna tunggal)

Dari perintah Prompt type: SQLServr.Exe –m (atau SQLServr.exe –f)

Catatan: Jika folder Binn tidak ada di jalur lingkungan Anda, Anda harus menavigasi ke folder Binn.

(Biasanya folder Binn terletak di: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)

  1. Setelah layanan SQL Server telah dimulai dalam mode pengguna tunggal atau dengan konfigurasi minimal, Anda sekarang dapat menggunakan perintah SQLCMD dari perintah Prompt untuk terhubung ke SQL Server dan melakukan operasi berikut untuk menambahkan diri Anda kembali sebagai Admin pada contoh SQL Server.

SQLCMD –S

Anda sekarang akan masuk ke SQL Server sebagai Admin.

  1. Setelah Anda masuk ke SQL Server menggunakan SQLCMD, terbitkan perintah berikut untuk membuat akun baru atau menambahkan login yang ada ke peran server SYSADMIN.

Untuk membuat login baru dan menambahkan login itu ke peran server SYSADMIN:

1> BUAT LOGIN ‘’ dengan PASSWORD = ’

2> pergi

1> SP_ADDSRVROLEMEMBER ‘’, ’SYSADMIN’

2> pergi

Untuk menambahkan login yang ada ke peran server SYSADMIN, jalankan yang berikut ini:

1> SP_ADDSRVROLEMEMBER ‘’, ’SYSADMIN’

Operasi di atas akan mengurus pemberian hak istimewa SYSADMIN untuk login yang ada atau login baru.

  1. Setelah langkah-langkah di atas berhasil dilakukan, langkah selanjutnya adalah berhenti dan memulai layanan SQL Server menggunakan opsi startup biasa. (Kali ini Anda tidak perlu –f atau –m)
2

Anda dapat melakukan selanjutnya:
1) Buat akun pengguna windows dengan hak administratif
2) Masuk di windows dengan akun administratif baru
3) Buka Sql Server Mangement Studio menggunakan Windows Authentication
4) Sekarang Anda masuk dalam SQL Server sebagai sysadmin, sehingga Anda dapat membuat akun baru atau memperbarui pengguna sa

0