Aracılığıyla paylaş


Sistem yöneticileri kilitlendiğinde SQL Server'a bağlanma

Şunlar için geçerlidir: SQL Server

Bu makalede, sql server veritabanı altyapısına sistem yöneticisi olarak erişimi yeniden nasıl geri kazanabileceğiniz açıklanır. Sistem yöneticisi aşağıdaki nedenlerden biri nedeniyle SQL Server örneğine erişimi kaybedebilir:

  • Sysadmin sabit sunucu rolünün üyesi olan tüm oturum açma işlemleri yanlışlıkla kaldırıldı.

  • Sysadmin sabit sunucu rolünün üyesi olan tüm Windows Grupları yanlışlıkla kaldırıldı.

  • Sysadmin sabit sunucu rolünün üyesi olan oturumlar, şirkette artık çalışmayan veya mevcut olmayan kişilerle ilişkilendirilmiştir.

  • Hesap sa devre dışı bırakıldı veya kimse parolayı bilmiyor.

Çözüm

Erişim sorununuzu çözmek için SQL Server örneğini tek kullanıcı modunda başlatmanızı öneririz. Bu mod, siz yeniden erişim elde etmeye çalışırken diğer bağlantıların oluşmasını engeller. Buradan SQL Server örneğinize bağlanabilir ve oturum açma bilgilerinizi sysadmin sunucu rolüne ekleyebilirsiniz. Bu çözüme ilişkin ayrıntılı adımlar adım adım yönergeler bölümünde sağlanır.

SQL Server örneğini komut satırından -m veya -f seçenekleriyle tek kullanıcı modunda başlatabilirsiniz. Bilgisayarın yerel Administrators grubunun herhangi bir üyesi daha sonra SQL Server örneğine sysadmin sabit sunucu rolünün bir üyesi olarak bağlanabilir.

Örneği tek kullanıcı modunda başlattığınızda SQL Server Agent hizmetini durdurun. Aksi takdirde, SQL Server Aracısı ilk olarak bağlanarak sunucuyla kullanılabilen tek bağlantıyı alabilir ve oturum açmanızı engelleyebilir.

Bilinmeyen bir istemci uygulamasının oturum açabilmeniz için tek kullanılabilir bağlantıyı alması da mümkündür. Bunun olmasını önlemek için, -m seçeneğini ve ardından bir uygulama adını kullanarak bağlantıları belirtilen uygulamadan tek bir bağlantıyla sınırlayabilirsiniz. Örneğin, SQL Server'ı -mSQLCMD ile başlatmak, bağlantıları sqlcmd istemci programı olarak kendisini tanımlayan tek bir bağlantıya sınırlar. Management Studio'da Sorgu Düzenleyicisi aracılığıyla bağlanmak için kullanın -m"Microsoft SQL Server Management Studio - Query".

Önemli

Güvenlik özelliği olarak uygulama adıyla kullanmayın -m . İstemci uygulamaları, bağlantı dizesi ayarları aracılığıyla uygulama adını belirtir, böylece kolayca sahte bir adla kopyalanabilir.

Aşağıdaki tabloda, örneğinizi komut satırında tek kullanıcı modunda başlatmanın farklı yolları özetlemektedir.

Seçenek Açıklama Ne zaman kullanılır?
-m Bağlantıları tek bir bağlantıyla sınırlar Örneğe bağlanmaya çalışan başka kullanıcı yok veya örneğe bağlanmak için kullandığınız uygulama adından emin değilsiniz.
-mSQLCMD Bağlantıları, kendisini sqlcmd istemci programı olarak tanımlaması gereken tek bir bağlantıyla sınırlar Sqlcmd ile örneğe bağlanmayı planlıyorsunuz ve diğer uygulamaların tek kullanılabilir bağlantıyı almasını engellemek istiyorsunuz.
-m"Microsoft SQL Server Management Studio - Query" Bağlantıları, kendisini Microsoft SQL Server Management Studio - Sorgu uygulaması olarak tanımlaması gereken tek bir bağlantıyla sınırlar. Örneğe Management Studio'daki Sorgu Düzenleyicisi aracılığıyla bağlanmayı planlıyorsunuz ve diğer uygulamaların tek kullanılabilir bağlantıyı almasını engellemek istiyorsunuz.
-f Tek bir bağlantıyla bağlantıları sınırlar ve örneği en az yapılandırmayla başlatır Başka bir yapılandırma başlatmanızı engelliyor.

Adım adım yönergeler

SQL Server'ı tek kullanıcı modunda başlatma hakkında adım adım yönergeler için bkz. SQL Server için tek kullanıcı modu.

PowerShell kullanma

1. Seçenek: Azure Data Studio kullanarak adımları doğrudan yürütülebilir bir not defterinde çalıştırma

Uyarı

Bu not defterini açmaya çalışmadan önce Yerel makinenizde Azure Data Studio'yu yükleyip yüklemediğini denetleyin. Azure Data Studio'yu yüklemek için bkz. Azure Data Studio'yu indirme ve yükleme.

2. Seçenek: Adımı el ile izleyin

  1. Yükseltilmiş bir Windows PowerShell komut istemi açın.

  2. Hizmet adını ve SQL Server örneğini ve Windows oturum açma değişkenlerini ayarlayın. Bu değerleri ortamınızla eşleşen değerlerle değiştirin.

    Varsayılan örneğiniz varsa, örnek adı olmadan kullanın MSSQLSERVER .

    $service_name = "MSSQL`$instancename"
    $sql_server_instance = "machine_name\instance"
    $login_to_be_granted_access = "[CONTOSO\PatK]"
    
  3. Aşağıdaki komutu kullanarak SQL Server hizmetini durdurarak tek kullanıcı moduyla yeniden başlatılabilmesini sağlayın:

    Varsayılan örneğiniz varsa, örnek adı olmadan kullanın MSSQLSERVER .

    net stop $service_name
    
  4. Şimdi SQL Server örneğinizi tek bir kullanıcı modunda başlatın ve yalnızca SQLCMD.exe bağlanmasına izin verin (/mSQLCMD):

    Uyarı

    Büyük harf kullandığınızdan emin olun SQLCMD

    Varsayılan örneğiniz varsa, örnek adı olmadan kullanın MSSQLSERVER .

    net start $service_name /f /mSQLCMD
    
  5. sqlcmd kullanarak bir CREATE LOGIN komut ve ardından ALTER SERVER ROLE komutu yürütür. Bu adımda, Windows'ta Yerel Yöneticiler grubunun üyesi olan bir hesapla oturum açtığınız varsayılır. Bu adım, etki alanı ve oturum açma adlarını sysadmin üyeliği vermek istediğiniz kimlik bilgileriyle değiştirdiğinizi varsayar.

    Varsayılan örneğiniz varsa, sunucunun adını kullanın.

    sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN $login_to_be_granted_access FROM WINDOWS; ALTER SERVER ROLE sysadmin ADD MEMBER $login_to_be_granted_access; "
    

    Aşağıdaki hatayı alırsanız, SQL Server'a başka bir sqlcmd bağlı olmadığından emin olmanız gerekir:

    Sqlcmd: Error: Microsoft ODBC Driver X for SQL Server : Login failed for user 'CONTOSO\BobD'. Reason: Server is in single user mode. Only one administrator can connect at this time.

  6. Karma Mod (isteğe bağlı): SQL Server örneğiniz karma kimlik doğrulama modunda çalışıyorsa şunları da yapabilirsiniz:

    1. SQL Server kullanıcısına sysadmin rol üyeliği verin. Sysadmin sabit sunucu rolünün üyesi olan yeni bir SQL Server kimlik doğrulaması oturum açma bilgisi oluşturmak için aşağıdaki gibi kodu yürütebilirsiniz. <strong_password> değerini seçtiğiniz güçlü bir parolayla değiştirin.

      Varsayılan örneğiniz varsa, sunucunun adını kullanın.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "CREATE LOGIN TempLogin WITH PASSWORD = '$strong_password'; ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin; "
      
    2. Ayrıca, SQL Server örneğiniz karma kimlik doğrulama modunda çalışıyorsa ve etkin sa bir hesabın parolasını sıfırlamak istiyorsanız. Sa hesabının parolasını aşağıdaki söz dizimiyle değiştirin. yerine <strong_password> seçtiğiniz güçlü bir parolayı kullanmayı unutmayın:

      Varsayılan örneğiniz varsa, sunucunun adını kullanın.

      $strong_password = "<strong_password>"
      sqlcmd.exe -E -S $sql_server_instance -Q "ALTER LOGIN sa WITH PASSWORD = $strong_password; "
      
  7. SQL Server örneğinizi çok kullanıcılı modda durdurma ve yeniden başlatma

    Varsayılan örneğiniz varsa, örnek adı olmadan kullanın MSSQLSERVER .

    net stop $service_name
    net start $service_name
    

SQL Server Configuration Manager ve Management Studio'yu (SSMS) kullanma

Bu yönergelerde şunlar varsayılır:

  • SQL Server, Windows 8 veya üzeri sürümlerde çalışıyor. Uygun olduğunda SQL Server veya Windows'un önceki sürümleri için küçük ayarlamalar sağlanır.

  • SQL Server Management Studio bilgisayara yüklenir.

Windows'ta yerel yöneticiler grubunun bir üyesi olarak oturum açarken bu yönergeleri gerçekleştirin.

  1. Windows Başlat menüsünde SQL Server Configuration Manager simgesine sağ tıklayın ve yönetici kimlik bilgilerinizi Configuration Manager'a geçirmek için Yönetici olarak çalıştır'ı seçin.

  2. SQL Server Configuration Manager'ın sol bölmesinde SQL Server Hizmetleri'ni seçin. Sağ bölmede SQL Server örneğinizi bulun. (VARSAYıLAN SQL Server örneği, bilgisayar adından sonra (MSSQLSERVER) içerir. Adlandırılmış örnekler, Kayıtlı Sunucularda sahip oldukları adla büyük harfle gösterilir.) SQL Server örneğine sağ tıklayın ve özellikler'i seçin.

  3. Başlangıç Parametreleri sekmesindeki Başlangıç parametresi belirtin kutusuna yazın -m ve Ekle'yi seçin. (Bu, kısa çizgi ve ardından küçük harf m.)

    SQL Server'ın önceki sürümlerinde Başlangıç Parametreleri sekmesi yoktur. Bu durumda, Gelişmiş sekmesinde Başlangıç Parametreleri'ne çift tıklayın. Parametreler küçük bir pencerede açılır. Mevcut parametrelerin hiçbirini değiştirmemeye dikkat edin. En sonda yeni bir parametre ;-m ekleyin ve tamam'ı seçin. (Bu, noktalı virgül; ardından tire ve küçük harf m olur.)

  4. Tamam'ı seçin ve yeniden başlatmak için iletiden sonra sunucunuzun adına sağ tıklayın ve yeniden başlat'ı seçin.

  5. SQL Server yeniden başlatıldıktan sonra sunucunuz tek kullanıcı modunda olur. SQL Server Aracısı'nın çalışmadığından emin olun. Başlatılırsa, tek bağlantınızı alır.

  6. Windows Başlat menüsünden Management Studio simgesine sağ tıklayın ve Yönetici olarak çalıştır'ı seçin. Bu, yönetici kimlik bilgilerinizi SSMS'ye geçirir.

    Windows'un önceki sürümlerinde Yönetici olarak çalıştır seçeneği bir alt menü olarak görünür.

    Bazı yapılandırmalarda SSMS birkaç bağlantı kurmaya çalışır. SQL Server tek kullanıcı modunda olduğundan birden çok bağlantı başarısız oluyor. Senaryonuza bağlı olarak aşağıdaki eylemlerden birini gerçekleştirin.

    1. Yönetici kimlik bilgilerinizi içeren Windows Kimlik Doğrulama'yı kullanarak Nesne Gezgini'ne bağlanın. Güvenlik'i genişletin, Oturum Açma Bilgileri'yi genişletin ve kendi oturum açma bilgilerinize çift tıklayın. Sunucu Rolleri sayfasında sysadmin'i ve ardından Tamam'ı seçin.

    2. Nesne Gezgini'ne bağlanmak yerine, Windows Kimlik Doğrulamasını (Yönetici kimlik bilgilerinizi içeren) kullanarak bir Sorgu Penceresi ile bağlanın. (Bu şekilde yalnızca Nesne Gezgini'ne bağlanmadıysanız bağlanabilirsiniz.) Sysadmin sabit sunucu rolünün üyesi olan yeni bir Windows Kimlik Doğrulama girişi eklemek için aşağıdaki gibi bir kod çalıştırabilirsiniz. Aşağıdaki örnek, CONTOSO\PatK adlı bir etki alanı kullanıcısı ekler.

      CREATE LOGIN [CONTOSO\PatK] FROM WINDOWS;
      ALTER SERVER ROLE sysadmin ADD MEMBER [CONTOSO\PatK];
      
    3. SQL Server'ınız karma kimlik doğrulama modunda çalışıyorsa, Windows Kimlik Doğrulama'yı (Yönetici kimlik bilgilerinizi içeren) kullanarak bir Sorgu Penceresi ile bağlanın. Sysadmin sabit sunucu rolünün üyesi olan yeni bir SQL Server kimlik doğrulaması oturum açma bilgisi oluşturmak için aşağıdaki gibi kodu yürütebilirsiniz.

      CREATE LOGIN TempLogin WITH PASSWORD = '<strong_password>';
      ALTER SERVER ROLE sysadmin ADD MEMBER TempLogin;
      

      Uyarı

      strong_password< güçlü bir parolayla değiştirin>.

    4. SQL Server'ınız karma kimlik doğrulama modunda çalışıyorsa ve hesabın sa parolasını sıfırlamak istiyorsanız, Windows Kimlik Doğrulaması'nı (Yönetici kimlik bilgilerinizi içeren) kullanarak bir Sorgu Penceresi'ne bağlanın. Hesabın sa parolasını aşağıdaki söz dizimiyle değiştirin.

      ALTER LOGIN sa WITH PASSWORD = '<strong_password>';
      

      Uyarı

      strong_password< güçlü bir parolayla değiştirin>.

  7. Management Studio'yu kapatın.

  8. Aşağıdaki birkaç adım SQL Server'ı yeniden çok kullanıcılı moda dönüştürecek. SQL Server Configuration Manager'ın sol bölmesinde SQL Server Hizmetleri'ni seçin.

  9. Sağ bölmede SQL Server örneğine sağ tıklayın ve özellikler'i seçin.

  10. Başlangıç Parametreleri sekmesindeki Mevcut parametreler kutusunda Kaldır'ı -m seçin ve ardından Kaldır'ı seçin.

    SQL Server'ın önceki sürümlerinde Başlangıç Parametreleri sekmesi yoktur. Bu durumda, Gelişmiş sekmesinde Başlangıç Parametreleri'ne çift tıklayın. Parametreler küçük bir pencerede açılır. ;-m Daha önce eklediğiniz öğesini kaldırın ve tamam'ı seçin.

  11. Sunucunuzun adına sağ tıklayın ve yeniden başlat'ı seçin. SQL Server'ı tek kullanıcı modunda başlatmadan önce durdurduysanız SQL Server Agent'ı yeniden başlattığınızdan emin olun.

Şimdi sysadmin sabit sunucu rolünün üyesi olan hesaplardan biriyle normal şekilde bağlanabiliyor olmanız gerekir.