it-swarm-eu.dev

Jak resetujete heslo sa?

Ztratil jsem heslo sa na počítači a když se přihlásím k počítači přímo pomocí účtu ve skupině administrátorů, SQL Server Management Studio mi neumožňuje přihlášení pomocí ověřování systému Windows.

Mým plánem bylo jednoduše se přihlásit na server, připojit se pomocí Windows Authentication a resetovat sa tak, aby používal nové heslo. Protože se nemůžu připojit pomocí ověřování systému Windows, nebude to fungovat.

Jak jinak mohu resetovat heslo sa?

22
Daniel Williams

Podle pokynů uvedených v odkazu níže můžete obnovit heslo SA heslo:

Kroky shrnuté níže:

  1. Spusťte Správce konfigurace serveru SQL z nabídky Start> Programy> Microsoft SQL Server 20xx> Nástroje pro konfiguraci> relevantní pro nejnovější verzi nainstalovaného serveru SQL (např. Pokud máte nainstalovanou verzi 2005 a 2012, použijte verzi 2012). Nemáte nabídku Start? Na úvodní obrazovce Windows 8 začněte psát SQL Server Con ..., dokud se nezobrazí.
  2. Zastavte instanci serveru SQL, kterou je třeba obnovit klepnutím pravým tlačítkem na instanci v SQL Server Services a výběrem možnosti „Stop“
  3. Klepněte pravým tlačítkem myši na právě zastavenou instanci, klepněte na příkaz Vlastnosti a na kartě „Upřesnit“ v textovém poli Vlastnosti přidejte na konec seznamu možnost „; –m“ na možnost „Parametry spuštění“ (u novějších verzí můžete přejít přímo na kartu „Parametry spuštění“, zadejte „-m“ a klikněte na Přidat, aniž byste se museli bát syntaxe, středníku nebo čehokoli jiného).
  4. Klikněte na tlačítko „OK“ a restartujte instance serveru SQL
  5. Po spuštění instance serveru SQL v režimu pro jednoho uživatele se může účet správce systému Windows připojit k serveru SQL pomocí nástroje sqlcmd pomocí ověřování systému Windows. Pomocí příkazů Transact-SQL, například „sp_addsrvrolemember“, můžete do role serveru sysadmin přidat stávající přihlašovací jméno (nebo nově vytvořené).

Následující příklad přidá účet „Buck“ v doméně „CONTOSO“ do role sysadmin:

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

Po obnovení přístupu k sysadminu odeberte „; -m“ ze spouštěcích parametrů pomocí nástroje Configuration Manager a znovu spusťte instanci serveru SQL.

POZNÁMKA: se ujistěte, že mezi „;“ není mezera; a „-m“ je analyzátor parametrů registru citlivý na taková překlepy. Měli byste vidět položku v souboru SQL Server ERRORLOG, který říká „SQL Server spuštěn v režimu pro jednoho uživatele.“


Dodatečné zdroje:

Nakonec můžete vždy zkopírovat databázové soubory do jiné instance nebo dokonce přeinstalovat SQL Server (během tohoto procesu přidat místní účet jako sysadmin).

10

To, co uděláte, bude záviset na vaší verzi serveru SQL a také na tom, zda si můžete dovolit službu SQL Server snížit, aby bylo možné vytvořit nová pověření. První dvě metody zde nevyžadují restartování instance:


Pro instance SQL Server 2005, 2008 a 2008 R2

Můžete se připojit pomocí účtu NT AUTHORITY\SYSTEM (nebo jinými metodami backdoor). V některých odpovědích jsou některé podrobnosti:

Mám také tip na MSSQLTips.com , který řeší tento problém:

V podstatě si stáhnete PSExec od Microsoftu a poté jej po instalaci nainstalujete Management Studio:

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

Připojí se jako NT AUTHORITY\SYSTEM a umožní vám dělat věci v Průzkumníku objektů, například:

  • Změňte instanci na režim SQL Server a Windows Authentication - klepněte pravým tlačítkem myši na název serveru, vlastnosti přístupů a změňte přepínač, pokud je aktuálně nastaven na Windows pouze:

    enter image description here

  • Nastavte heslo pro účet sa - rozbalte Zabezpečení, rozbalte přihlášení, klepněte pravým tlačítkem myši sa a stiskněte Vlastnosti, a ve výsledném dialogu budou dvě pole pro zadání hesla:

    enter image description here

  • Přidejte své vlastní přihlašovací jméno jako sysadmin - klikněte pravým tlačítkem na Přihlášení, Nové přihlášení ... zadejte své přihlašovací jméno (ve tvaru DOMAIN\username ), přejděte na kartu Role serveru a zaškrtněte políčko sysadmin a klikněte na OK:

    enter image description here

  • (nebo pokud je vaše přihlašovací jméno již uvedeno, klepněte pravým tlačítkem myši na položku Vlastnosti a ujistěte se, že je v části Role serveru zaškrtnuto políčko sysadmin)


Pro SQL Server 2012 a novější instance

Počínaje serverem SQL Server 2012 již NT Authority\SYSTEM již nebyla ve výchozím nastavení udělena práva k serveru SQL. Takže další způsob, jak to udělat v těchto novějších verzích, byl podrobně Argenis Fernandez :

  1. Pokud je spuštěna služba SQL VSS Writer, zastavte ji a pozastavte všechny plány údržby nebo zálohovací software třetích stran, na které by se mohla spolehnout.
  2. Otevřete regedit.exe a změňte hodnotu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePath tak, aby ukazovala na SQLCMD.exe, což bude v C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. Po úpravě by hodnota registru měla vypadat asi takto (omlouváme se za posouvání):

    "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. Zkuste znovu spustit službu SQL VSS Writer (zobrazí se chyba; to je v pořádku).

  4. Nyní byste měli být schopni připojit se jako sysadmin pomocí YourDomain\YourUserName. Zastavte tedy službu SQL VSS Writer, opravte registr a restartujte službu (pokud potřebujete, aby byla spuštěna nebo byla spuštěna před spuštěním).

Ve druhém tipu jsem to prošel mnohem podrobněji:

I když jsem psal tento tip, použil jsem těžkopádnější přístup k vytvoření kopie SQLCMD.exe a nahrazení sqlwriter.exe - mnohem jednodušší je zaměřit službu přímo na SQLCMD.exe.


Pokud si můžete dovolit zastavit službu SQL Server

Existuje oficiálně podporovaná cesta od společnosti Microsoft, která vyžaduje restartování instance v režimu jednoho uživatele:

K dispozici je také funkce dbatools.io , řešení Powershell pro správu serveru SQL, nazvané Reset-DbaAdmin:


Bezpečnost zde není hlavním problémem

Vidím spoustu lidí, kteří žádají, aby Microsoft „opravil“ tyto takzvané „zranitelnosti“. Toto jsou platné přístupy k obnovení přístupu k instanci serveru SQL, kterou správně vlastníte. Všichni vyžadují zvýšená oprávnění pro fyzického hostitele, na kterém je umístěn SQL Server; jak jsem řekl několika lidem, pokud nechcete, aby se vývojáři hrávali s instalacemi serveru SQL, nedělejte z nich administrátory.

9
Aaron Bertrand