it-swarm-eu.dev

Jak přidat sysadmin k uživateli v SQL Server 2008, když neexistují žádné účty sysadmin

Mám spuštěnou instanci serveru SQL Server 2008. Bohužel během testování jsem zrušil výběr práv sysadmin pro své přihlašovací jméno a nyní jej nemohu číst (protože nemám práva sysadmin).

Pro instanci kromě SA nejsou žádné další účty sysadmin.

Byl jsem nastaven pouze pro Windows Authentication, takže jsem hacknul LoginMode v registru na 2, takže jsem se mohl přihlásit jako SA pomocí Sql Authentication.) Tím se skutečně nastaví režim přihlášení na Smíšené, nicméně = SA uživatel je ve výchozím nastavení zakázán a nemůžu jej znovu povolit, protože nemám práva sysadmin.

Jak mohu povolit přihlášení SA, abych se mohl přihlásit a znovu přiřadit sysadmin k mému normálnímu účtu? Existuje pro to také nastavení registru nebo je uloženo v hlavní databázi?

25
Mark D Jackson

Dokonce i ten nejpoužívanější typ připojení pro připojení Dedicated Administrator Connection ( DAC ), který lze použít pouze jako místní připojení a umožňuje vrátit všechny druhy zpět zla, stále vyžaduje přihlašovací údaje. Nemyslím si, že existuje oficiální způsob, jak toho dosáhnout.

Nejrychlejším způsobem, jak tento systém napravit, může být vypnutí serveru SQL, zkopírování souborů uživatelských databází někde v bezpečí, odinstalace, opětovná instalace (ujistěte se, že aktualizace Service Pack minimálně na úrovni, na které jste byli dříve), zkopírujte soubory zpět a připojte je databáze. (Nejste si jisti, zda je požadováno kopírování ven/zpět, ale jen proto, aby bylo bezpečné ...).

Stále budete muset ručně obnovit objekty na úrovni serveru (např. Přihlášení)

11

Skutečné backdoor na SQL Server existuje, které nevyžaduje restartování a/nebo restartování nic do režimu pro jednoho uživatele. Udělal jsem to na systémech, kde jsem neměl přístup, ale potřeboval jsem zkontrolovat věci.

Stáhněte si nástroje PSexec z zde . Umístěte jej na server a poté do příkazu Prompt tento příkaz spusťte: psexec -i -s SSMS.exe nebo sqlwb.exe

Tím se otevře SSMS jako systémový účet, který má sysadmin přístup k instanci serveru SQL. To se provádí během instalace serveru SQL, ale slyšel jsem, že tomu tak nebude s SQL 2012.

27
user507

SQL Server 2008 se liší od serveru SQL Server 2005 v tom, že místní správci již nezdědí roli pevného serveru sysadmin.

Po instalaci serveru SQL Server 2008 se zobrazí výzva k určení účtu, který bude přidán do role sysadmin. Pokud však po instalaci softwaru obdržíte krabici, příliš vám to nepomůže.

Naštěstí společnost Microsoft zachovala funkčnost roku 2005, když je SQL Server spuštěn v režimu jednoho uživatele. Zde je to, co děláte:

  • přihlásit se na server jako správce systému Windows
  • zastavit SQL server
  • na příkazový řádek v adresáři, kde se nachází sqlservr.exe, zadejte sqlservr.exe -m a stiskněte klávesu enter - tím se spustí SQL Server v režimu pro jednoho uživatele
  • otevřete SQL Server EM a přidejte svůj účet do pevné role serveru sysadmin
  • zastavte SQL server, restartujte (na příkazovém řádku nebo v SQL Server EM
14
Brian Sullivan

To je skvělá otázka a někdo bude v této situaci a potřebuje záchranu.

Celý kredit jde do codykonior

Pokud jste správcem systému Windows na serveru , můžete pomocí skriptu PowerShell v2 získat přístup bez výpadků a bez známého rizika. Děje se to tak, že duplikuje přihlašovací token služby SQL Server, i když je spuštěn pod účtem služby AD, virtuálním účtem nebo chráněn pomocí SID služby

Níže uvedený skript provede iteraci služeb serveru SQL a přidá vás do role sysadmin , kdekoli vám chybí:

#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

Stále si můžete vytvořit přihlášení pomocí přístupu „sysadmin“. Díky hlavnímu datovému inženýru společnosti Microsoft (Saleem Hakani) vytvořil níže uvedené tipy a trik pro SQL Server.

Našel jsem to, když jsem byl zaseknutý v podobném stavu, když jsem zapomněl heslo sa pro můj testovací stroj.

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

Zde jsou kroky, které budete muset provést:

  1. Spusťte instanci serveru SQL pomocí režimu jednoho uživatele (nebo minimální konfigurace, která také uvede server SQL do režimu jednoho uživatele)

Z příkazu Prompt type: SQLServr.Exe –m (nebo SQLServr.exe –f)

Poznámka: Pokud složka Binn není ve vaší ekologické cestě, musíte přejít do složky Binn.

(Obvykle je složka Binn umístěna na adrese: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)

  1. Jakmile je služba SQL Server spuštěna v režimu jednoho uživatele nebo s minimální konfigurací, můžete nyní pomocí příkazu SQLCMD z příkazu Prompt připojit k serveru SQL a provést následující operace, abyste se přidali zpět jako instance správce na serveru SQL.

SQLCMD –S

Nyní budete přihlášeni k serveru SQL jako správce.

  1. Jakmile jste přihlášeni k serveru SQL pomocí protokolu SQLCMD, zadejte následující příkazy k vytvoření nového účtu nebo přidání existujícího přihlášení do role serveru SYSADMIN.

Chcete-li vytvořit nové přihlášení a přidat toto přihlášení do role serveru SYSADMIN:

1> VYTVOŘTE PŘIHLÁSIT 'HESLO s HESLO =' '

2> jít

1> SP_ADDSRVROLEMEMBER „,„ SYSADMIN “

2> jít

Chcete-li přidat stávající přihlášení k roli serveru SYSADMIN, proveďte následující:

1> SP_ADDSRVROLEMEMBER „,„ SYSADMIN “

Výše uvedená operace se postará o udělení oprávnění SYSADMIN existujícímu přihlášení nebo novému přihlášení.

  1. Jakmile jsou výše uvedené kroky úspěšně provedeny, dalším krokem je zastavení a spuštění služeb serveru SQL pomocí pravidelných možností spuštění. (Tentokrát nebudete potřebovat –f nebo –m)
2

Můžete udělat následující:
1) Vytvořte uživatelský účet systému Windows s oprávněními správce
2) Přihlaste se do oken pomocí nového účtu pro správu
3) Otevřete Sql Server Mangement Studio pomocí autentizace Windows
4) Nyní jste přihlášeni k serveru SQL jako sysadmin, takže můžete vytvářet nové účty nebo aktualizovat uživatele sa

0