Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Bir veritabanı kullanıcısı, master veritabanındaki bir oturum açma bilgisine dayandığında ancak bu oturum açma bilgisi artık master içinde mevcut değilse, SQL Server'da kullanıcılar yetim 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 yetim kullanıcıların nasıl bulunup girişlerle 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.
Önemli
Saklı sp_change_users_login yordam daha önce yalnız bırakılmış kullanıcıları düzeltmek için kullanılıyordu, ancak artık kullanım dışı bırakıldı. Bunun yerine, ALTER USER ... WITH LOGIN bölümünde açıklandığı gibi kullanın. Daha fazla bilgi için bkz. sp_change_users_login (Transact-SQL).
Arka plan
SQL Server örneğinde oturum açma bilgilerine dayanan bir güvenlik asıl öznesi (veritabanı kullanıcı kimliği) kullanan bir veritabanına bağlantılar için, bu öznede master veritabanında geçerli bir oturum açma bilgisi bulunmalı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, SQL Server oturum açma bilgisiyle ilişkilendirilen bir "veritabanı kullanıcısı" olarak tek tek veritabanlarına 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ı, söz konusu sunucu örneğindeki veritabanının yalnız bırakılmış bir kullanıcısıdır . Veritabanı kullanıcısı, oturum açma bilgileri SID veritabanında mevcut değilse master eşlendiği durumlarda yetim kalma durumu meydana gelebilir. 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. İlgili SQL Server oturum açma bilgisi kaldırılırsa, bir veritabanı kullanıcısı da yetim kalabilir. Oturum açma bilgileri yeniden oluşturulsa bile farklı SIDbir öğesine sahiptir, 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
SQL Server’da eksik olan SQL Server kimlik doğrulama oturumlarına dayalı olarak sahipsiz kullanıcıları algılamak için kullanıcı veritabanında aşağıdaki deyimi çalıştırarak:
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';
Çıktı, geçerli veritabanında herhangi bir SQL Server oturum açma bilgisine bağlı olmayan SQL Server kimlik doğrulama kullanıcılarını ve bunlara karşılık gelen SID'leri listeler.
Azure SQL Veritabanı ve Azure Synapse Analytics için
sys.server_principals tablosu SQL Veritabanı veya Azure Synapse Analytics'te kullanılamaz. Bu ortamlarda yalnız bırakılmış kullanıcıları tanımlamak için şu adımları tamamlayın:
Veritabanına bağlanın
masterve 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';Aşağıdaki sorguyu kullanarak kullanıcı veritabanına bağlanın ve tablodaki
sys.database_principalskullanı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';Kullanıcı veritabanı tablosunda, veritabanı
sys.database_principalstablosundaki oturum açma SID'leriyle eşleşmemiş kullanıcı SID'lerimastersql_loginsolup 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. Önceki bölümde edindiğiniz veritabanı kullanıcısının bilgilerini 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
Her oturum 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.
Kullanım dışı yöntemler
SQL Server'ın önceki sürümlerinde, sp_change_users_login saklı yordam yalnız bırakılmış kullanıcıları çözümlemek için kullanılırdı. Bu yordam kullanım dışıdır ve gelecekteki bir sürümde kaldırılabilir. Bunun yerine ALTER USER kullanın.
Aşağıdaki tabloda, yaygın sp_change_users_login işlemler için eşdeğer modern söz dizimi gösterilmektedir:
| Kullanım dışı söz dizimi | Önerilen değişiklik |
|---|---|
EXEC sp_change_users_login 'Report' |
SELECT dp.name FROM sys.database_principals dp LEFT JOIN sys.server_principals sp ON dp.sid = sp.sid WHERE sp.sid IS NULL AND dp.authentication_type_desc = 'INSTANCE' |
EXEC sp_change_users_login 'Auto_Fix', '<user>' |
ALTER USER <user> WITH LOGIN = <user> |
EXEC sp_change_users_login 'Update_One', '<user>', '<login>' |
ALTER USER <user> WITH LOGIN = <login> |
Daha fazla bilgi için bkz. sp_change_users_login (Transact-SQL).
İlgili içerik
- GİRİŞ OLUŞTUR (Transact-SQL)
- ALTER USER (Transact-SQL)
- KULLANICI OLUŞTUR (Transact-SQL)
- sys.database_principals (Transact-SQL)
- sys.server_principals (Transact-SQL)
- sys.sql_logins (Transact-SQL)
- sp_change_users_login (Transact-SQL)
- Kapsanan veritabanlarını kullanarak veritabanınızı taşınabilir hale getirme