Sa şifresini nasıl sıfırlarsınız?


22

Bir makinede sa şifresini kaybettim ve makineye doğrudan yönetici grubundaki bir hesabı kullanarak girdiğimde, SQL Server Management Studio, Windows kimlik doğrulaması kullanarak giriş yapmama izin vermiyor.

Planım basitçe sunucuya giriş yapmak, Windows Kimlik Doğrulama ile bağlanmak ve yeni bir şifre kullanmak için sıfırlamaktı. Windows Kimlik Doğrulama ile bağlanamadığımdan bu işe yaramaz.

Sa şifresini başka nasıl sıfırlayabilirim?


Cevabı buldum. Bir etki alanı yöneticisi olarak giriş yapamadım, ancak yerel yönetici kullanarak iyi çalıştı.
Daniel Williams

Yerel makine 'Yöneticiler' grubunun bir üyesinin bunu yapabileceğini mi kastediyorsunuz? Gelecek dönem için ne gibi adımlar attınız?
p.campbell

Hesap, yerel Yönetici hesabının kendisidir. Bu hesap, etki alanı hesabım gibi yerel Adminsitrators grubunun bir parçasıdır. Ancak, yalnızca yerel Yönetici hesabı, Sql Sunucusunda oturum açmak için Windows kimlik doğrulamasını kullanabildi. Umarım bu yardımcı olur.
Daniel Williams

örneği tek kullanıcı modunda başlatmak, yerel Yönetici grubunun bir parçası olan herhangi bir yerel hesabın örneğe erişmesine de izin verir. Düzenleme: @ user1419 bağlantısı bunu gösteriyor.
Shawn Melton

Yanıtlar:


10

SA şifresini sıfırlamak için aşağıdaki linkte belirtilen adımları takip edebilirsiniz:

Aşağıda özetlenen adımlar:

  1. Başlatmış olduğunuz SQL Server'ın en yeni sürümüyle ilgili olan Başlat Menüsü> Programlar> Microsoft SQL Server 20xx> Konfigürasyon Araçları> 'dan SQL Server Konfigürasyon Yöneticisi'ni açın (ör. 2005 ve 2012 kurulumunuz varsa, 2012 versiyonunu kullanın). Başlat Menünüz yok mu? Windows 8'in Başlat ekranında, görünene kadar SQL Server Con ... yazmaya başlayın.
  2. SQL Server Hizmetlerinde örneği sağ tıklatarak ve "Durdur" u seçerek kurtarmanız gereken SQL Server örneğini durdurun
  3. Az önce durdurduğunuz örneği sağ tıklayın, Özellikler'i tıklayın ve “Gelişmiş” sekmesinde, Özellikler metin kutusuna “Başlangıç ​​parametreleri” seçeneğindeki listenin sonuna “; –m” ekleyin (yeni sürümlerde, doğrudan "Başlangıç ​​Parametreleri" sekmesine gidebilir, "-m" yazabilir ve sözdizimi, noktalı virgül veya başka bir şey hakkında endişelenmeden Ekle'yi tıklayabilirsiniz).
  4. “Tamam” düğmesine tıklayın ve SQL Server Örneğini yeniden başlatın
  5. SQL Server Örneği tek kullanıcı modunda başlatıldıktan sonra, Windows Yönetici hesabı, Windows kimlik doğrulamasını kullanarak sqlcmd yardımcı programını kullanarak SQL Server'a bağlanabilir. Sysadmin sunucu rolüne varolan bir giriş (veya yeni oluşturulan) eklemek için "sp_addsrvrolemember" gibi Transact-SQL komutlarını kullanabilirsiniz.

Aşağıdaki örnek, "CONTOSO" alanındaki "Buck" hesabını sysadmin rolüne ekler:

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

Sysadmin erişimi kurtarıldıktan sonra, Configuration Manager kullanarak “; -m” yi başlangıç ​​parametrelerinden kaldırın ve SQL Server örneğini bir kez daha başlatın.

NOT: “;” ve “-m” arasında boşluk olmadığından emin olun, kayıt defteri parametresi ayrıştırıcısı bu tür yazım kurallarına duyarlıdır. SQL Server ERRORLOG dosyasında “SQL Server tek kullanıcı modunda başlatıldı” yazan bir giriş görmelisiniz.


Ek kaynaklar:

Sonuçta, veritabanı dosyalarını her zaman başka bir örneğe kopyalayabilir veya SQL Server'ı yeniden yükleyebilirsiniz (bu işlem sırasında sysadmin olarak yerel bir hesap ekleyebilirsiniz).


9

Yapacağınız şey, yeni kimlik bilgileri oluşturmak için SQL Server sürümünüzü ve SQL Server hizmetini indirmeyi göze alamayacağınıza bağlı olacaktır. Buradaki ilk iki yöntem, örneği yeniden başlatmayı gerektirmez:


SQL Server 2005, 2008 ve 2008 R2 örnekleri için

Hesabı kullanarak bağlanabilirsiniz NT AUTHORITY\SYSTEM(veya diğer arka kapı yöntemleri). Buradaki bazı cevaplarda bazı detaylar var:

Ayrıca bu soruna yönelik MSSQLTips.com adresinde bir ipucum var:

Temel olarak, PSExec'i Microsoft'tan indirin, ardından kurduktan sonra Management Studio'yu başlatmak için kullanın:

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

Bu şekilde bağlanacak NT AUTHORITY\SYSTEMve aşağıdakiler gibi Object Explorer'da bir şeyler yapmanıza izin verecek:

  • Örneği SQL Server ve Windows Kimlik Doğrulama moduna değiştirin - Sunucu adını sağ tıklatın, özelliklere basın ve şu anda yalnızca Windows olarak ayarlanmışsa radyo düğmesini değiştirin:

    görüntü tanımını buraya girin

  • saHesap şifresini ayarlayın - Güvenlik'i genişletin, Girişler'i genişletin, sağ tıklayın save Özellikler'e basın; sonuçta ortaya çıkan iletişim kutusunda iki şifre girişi alanı olacaktır:

    görüntü tanımını buraya girin

  • Kendi giriş bilgilerinizi bir giriş olarak ekleyinsysadmin - Girişler, Yeni Girişler'i sağ tıklayın ... giriş adınızı girin (forma girin DOMAIN\username), sonra Sunucu Rolleri sekmesine gidin ve sysadminkutuyu işaretleyin ve Tamam'ı tıklayın:

    görüntü tanımını buraya girin

  • (veya, giriş bilgileriniz daha önce listelenmişse, Özellikler'e sağ tıklayın ve sysadminSunucu Rolleri altında kontrol edildiğinden emin olun )


SQL Server 2012 ve daha yeni örnekler için

SQL Server 2012 ile başlayarak, NT Authority\SYSTEMartık varsayılan olarak SQL Server'a hak verilmedi. Bu yeni sürümlerde bunu yapmanın başka bir yolu da Argenis Fernandez tarafından ayrıntılı olarak açıklanmıştır :

  1. SQL VSS Yazıcı hizmeti çalışıyorsa, durdurun ve tüm bakım planlarını veya buna bağlı olabilecek 3. taraf yedekleme yazılımlarını askıya alın.
  2. Açık regedit.exedeğerini değiştirmek ve HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SQLWriter\ImagePathişaret edecek SQLCMD.exeiçinde olacak, C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\**<...110|120|130|140...>**\Tools\Binn. Düzenlemeden sonra, kayıt defteri değeri aşağıdaki gibi görünmelidir (kaydırma için üzgünüm):

    "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. SQL VSS Writer servisini tekrar başlatmayı deneyin (bir hata ile karşılaşacaksınız; sorun değil).

  4. Şimdi sysadminkullanarak bağlanabilmelisiniz YourDomain\YourUserName. Bu nedenle, SQL VSS Yazıcı hizmetini durdurun, kayıt defterini düzeltin ve hizmeti yeniden başlatın (çalışmasına ihtiyacınız varsa veya bunu başlatmadan önce çalışıyorsa).

İkinci bir ipucunda daha detaylı olarak bu konudan geçtim:

Bu ipucunu yazdığımda, kopyasını alma SQLCMD.exeve değiştirme konusunda daha hantal bir yaklaşım kullandım sqlwriter.exe- hizmeti SQLCMD.exedoğrudan yönlendirmek çok daha kolaydı .


SQL Server hizmetini almak için göze alabilirsiniz

Microsoft'tan tek bir kullanıcı modunda örneği yeniden başlatmayı gerektiren resmi olarak desteklenen bir yol var:

Ayrıca SQL Server'ı yönetmek için bir Powershell çözümü olan dbatools.io'da bir işlev de vardır Reset-DbaAdmin:


Güvenlik burada asıl mesele değil

Microsoft'tan bu sözde "güvenlik açıklarını" "düzeltmeleri" için arayan birçok kişi görüyorum. Bunlar, haklı olarak sahip olduğunuz bir SQL Server örneğine erişimi kurtarmak için geçerli yaklaşımlardır. Hepsi, SQL Server'ın bulunduğu fiziksel ana bilgisayarda yükseltilmiş ayrıcalıklar gerektirir; Birkaç kişiye söylediğim gibi, geliştiricilerin SQL Server yüklemeleriyle uğraşmasını istemiyorsanız, onları yöneticiler yapmayın.


Bu yöntem SA hesabını da etkinleştirmeme izin verecek mi? SA hesabımın devre dışı bırakıldığı ve Genel rolü olan bir AD grubumun olduğu bir konumda sıkışıp kaldım. Ayrıca, yönteminiz listelendiğinde, örneği almaksızın bu adımları uygulayabilir miyim? Soruyorum çünkü sunucum şu anda bir üretim ortamında.
Sean Perkins,

1
@Sean evet, sa'yı yeniden etkinleştirebilmeniz ve / veya başka bir SQL auth hesabı oluşturabilmeniz veya AD kullanıcınızı (grup değil!) Özellikle daha yüksek bir role ekleyebilmeniz gerekir. Bunların hiçbiri SQL Server'ın yeniden başlatılmasını gerektirmez (bunun gerekli olacağı tek durum, yalnızca karma kimlik doğrulaması ile yalnızca Windows arasında değişiyor).
Aaron Bertrand

Belirlediğiniz işlemi başlattığımda aşağıdaki hatayı alıyorum. Ayrıca listelenen tek hesapların ekran görüntüsünü almayı da başardım. Bir noktada SQL 2012'de bu yönteme izin vermeyecek bir değişiklik oldu mu? Geçerli sürümüm 11.0.3128 . Dahası, ne tür bir değişiklik yaptığım önemli değil, izinlerim olmadığını belirten bir hata varyasyonu alacağım. Son bir şey, bunun bir fark yaratacağından şüpheliyim, ancak PowerShell'i Yönetici hakları ile açtım, cmd.exe'yi, ardından psexec -i -s "C: \ ...... smss.exe"! [Hesap Oluşturma Hatası] ( i.stack.imgur.com/ITOja.p
Sean Perkins

Ekteki resim şimdi hiçbir şey göstermiyor, ancak listelenen tek hesap olarak "SA" ve "NT AUTHORITY \ SYSTEM" yazıyordu. Aldığım hata mesajı "Kullanıcı bu işlemi gerçekleştirme iznine sahip değil. (Microsoft SQL Server, Hata: 15247)"
Sean Perkins

@Sean PowerShell? PSExec'in PowerShell ile ilgisi yok. Makinede yerel yönetici misiniz? Emin misiniz?
Aaron Bertrand
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.