Aracılığıyla paylaş


Yalnız bırakılmış kullanıcılarla ilgili sorunları giderme (SQL Server)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Bir veritabanı kullanıcısı veritabanındaki bir oturum açmayı temel alır ancak oturum açma artık içinde mevcut olmadığında SQL Server'da mastermasterkullanıcılar yalnız kalır. Bu durum, oturum açma bilgileri silindiğinde veya veritabanı oturum açmanın olmadığı başka bir sunucuya taşındığında oluşabilir. Bu makalede yalnız bırakılmış kullanıcıların nasıl bulunup oturum açma işlemleriyle yeniden eşlendiği açıklanır.

Uyarı

Taşınabilecek veritabanları için bağımsız veritabanı kullanıcılarını kullanarak yalnız bırakılmış kullanıcıların olasılığını azaltın. Daha fazla bilgi için bkz. Veritabanınızı kapsanan veritabanlarını kullanarak taşınabilir hale getirme.

Arka plan

Sql Server örneğinde oturum açma bilgilerini temel alan bir güvenlik sorumlusu (veritabanı kullanıcı kimliği) kullanan bir veritabanına yönelik bağlantılar için sorumlunun veritabanında geçerli bir oturum açma bilgisi master olmalıdır. Bu oturum açma, sorumlunun kimliğini doğrulayan ve sorumlunun SQL Server örneğine bağlanmasına izin verilip verilmeyeceğini belirleyen kimlik doğrulama işleminde kullanılır. Sunucu örneğindeki SQL Server oturum açma işlemleri sys.server_principals katalog görünümünde ve sys.sql_logins uyumluluk görünümünde görünür.

SQL Server oturum açma bilgileri tek tek veritabanlarına SQL Server oturum açma bilgileriyle eşlenmiş bir "veritabanı kullanıcısı" olarak erişir. Bu kuralın üç özel durumu vardır:

  • Kapsanan veritabanı kullanıcıları

    Bağımsız veritabanı kullanıcıları, kullanıcı veritabanı düzeyinde kimlik doğrulaması yapar ve oturum açma bilgileriyle ilişkili değildir. Veritabanları daha taşınabilir olduğundan ve kapsanan veritabanı kullanıcıları yalnız kalamadığından bu model önerilir. Ancak, her veritabanı için yeniden oluşturulmalıdır. Bu model, birçok veritabanının olduğu bir ortamda pratik olmayabilir.

  • Konuk hesabı

    Bir veritabanında etkinleştirildiğinde, bu hesap bir veritabanı kullanıcısına eşlenmeyen SQL Server oturum açma bilgilerinin veritabanına konuk kullanıcı olarak erişmesine izin verir. Konuk hesabı varsayılan olarak devre dışıdır.

  • Microsoft Windows grup üyelikleri

    Bir Windows kullanıcısından oluşturulan SQL Server oturum açma bilgileri, Windows kullanıcısı aynı zamanda veritabanındaki bir Windows grubunun üyesiyse veritabanına erişebilir.

SQL Server oturum açma bilgilerinin veritabanı kullanıcısına eşleneceğiyle ilgili bilgiler veritabanında depolanır. Veritabanı kullanıcısının adını ve ilgili SQL Server oturum açma bilgilerinin güvenlik tanımlayıcısını (SID) içerir. Bu veritabanı kullanıcısının izinleri veritabanında yetkilendirme için uygulanır.

İlgili SQL Server oturum açma bilgilerinin tanımsız olduğu veya sunucu örneğinde yanlış tanımlandığı bir veritabanı kullanıcısı (oturum açmaya bağlı olarak) örnekte oturum açamaz. Böyle bir kullanıcının, bu sunucu örneğindeki veritabanının yalnız bırakılmış bir kullanıcısı olduğu söylenir. Veritabanı kullanıcısı veritabanında mevcut master olmayan bir oturum açma bilgileriyle SID eşlenirse yalnız kullanım gerçekleşebilir. Veritabanı geri yüklendikten veya oturum açmanın hiç oluşturulmadığı farklı bir SQL Server örneğine eklendikten sonra veritabanı kullanıcısı yalnız bırakılmış duruma gelebilir. Veritabanı kullanıcısı, ilgili SQL Server oturum açma bilgisi bırakılırsa yalnız da bırakılabilir. Oturum açma bilgileri yeniden oluşturulsa bile farklı SIDbir öğesine sahip olur, bu nedenle veritabanı kullanıcısı yine yalnız kalır.

Yalnız bırakılmış kullanıcıları algılama

SQL Server ve PDW için

EKSIK SQL Server kimlik doğrulaması oturum açma bilgilerini temel alarak SQL Server'da yalnız bırakılmış kullanıcıları algılamak için kullanıcı veritabanında aşağıdaki deyimi çalıştırın:

SELECT dp.type_desc, dp.sid, dp.name AS user_name
FROM sys.database_principals AS dp
LEFT JOIN sys.server_principals AS sp
    ON dp.sid = sp.sid
WHERE sp.sid IS NULL
    AND dp.authentication_type_desc = 'INSTANCE';

Çıkışta SQL Server kimlik doğrulaması kullanıcıları ve geçerli veritabanındaki sql server oturum açma bilgilerine bağlı olmayan ilgili SID'ler listelenir.

Azure SQL Veritabanı ve Azure Synapse Analytics için

sys.server_principals tablosu SQL Veritabanı veya Azure Synapse Analytics'te kullanılamaz. Bu adımları tamamlayarak bu ortamlarda yalnız bırakılmış kullanıcıları belirleyin:

  1. Veritabanına bağlanın master ve aşağıdaki sorguyu kullanarak oturum açma işlemleri için SID'leri seçin:

    SELECT sid
    FROM sys.sql_logins
    WHERE type = 'S';
    
  2. Aşağıdaki sorguyu kullanarak kullanıcı veritabanına bağlanın ve tablodaki sys.database_principals kullanıcıların SID'lerini gözden geçirin:

    SELECT name, sid, principal_id
    FROM sys.database_principals
    WHERE type = 'S'
      AND name NOT IN ('guest', 'INFORMATION_SCHEMA', 'sys')
      AND authentication_type_desc = 'INSTANCE';
    
  3. Kullanıcı veritabanı tablosunda, veritabanı sys.database_principals tablosundaki oturum açma SID'leriyle eşleşmemiş kullanıcı SID'leri mastersql_logins olup olmadığını belirlemek için iki listeyi karşılaştırın.

Yalnız bırakılmış kullanıcıyı çözme

master Veritabanında CREATE LOGIN deyimini SID kullanarak eksik oturum açma bilgilerini yeniden oluşturun. SID Önceki bölümde edindiğiniz veritabanı kullanıcısının değerini sağlayın.

CREATE LOGIN <login_name>
WITH PASSWORD = '<use_a_strong_password_here>',
SID = <SID>;

Yalnız bırakılmış bir kullanıcıyı içinde masterzaten var olan bir oturum açmayla eşlemek için kullanıcı veritabanında oturum açma adını belirterek ALTER USER deyimini çalıştırın:

ALTER USER <user_name> WITH Login = <login_name>;

Eksik oturum açma bilgilerini yeniden oluşturduğunuzda, kullanıcı sağlanan parolayı kullanarak veritabanına erişebilir. Kullanıcı daha sonra şu deyimi kullanarak ALTER LOGIN oturum açma hesabının parolasını değiştirebilir:

ALTER LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';

Önemli

Tüm oturum açma bilgileri kendi parolasını değiştirebilir. Yalnızca izni olan ALTER ANY LOGIN oturum açma işlemleri başka bir kullanıcının oturum açma parolasını değiştirebilir. Ancak, yalnızca sysadmin rolünün üyeleri sysadmin rol üyelerinin parolalarını değiştirebilir.