Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veyadizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Mevcut bir veritabanı kullanıcısını SQL Server oturum açma bilgileriyle eşler.
Önemli
Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine ALTER USER kullanın.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_change_users_login
[ @Action = ] 'Action'
[ , [ @UserNamePattern = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
Bağımsız değişken
[ @Action = ] 'Eylem'
Saklı yordamın gerçekleştirme eylemini açıklar.
| Değer | Açıklama |
|---|---|
Auto_Fix |
Geçerli veritabanındaki sys.database_principals sistem kataloğu görünümündeki bir kullanıcı girdisini aynı ada sahip bir SQL Server oturumuna bağlar. Aynı ada sahip bir oturum açma bilgisi yoksa, bir tane oluşturulur. Doğru bağlantının yapıldığını onaylamak için Auto_Fix deyiminin sonucunu inceleyin. Güvenliğe duyarlı durumlarda Auto_Fix kullanmaktan kaçının.Auto_Fixkullandığınızda, oturum açma henüz yoksa @UserNamePattern ve @Password belirtmeniz gerekir, aksi takdirde @UserNamePattern belirtmeniz gerekir, ancak @Password yoksayılır.
@LoginNameNULLolmalıdır.
@UserNamePattern geçerli veritabanında geçerli bir kullanıcı olmalıdır. Oturum açma bilgilerine başka bir kullanıcı eşlenemez. |
Report |
Geçerli veritabanında oturum açma bilgilerine bağlı olmayan kullanıcıları ve buna karşılık gelen güvenlik tanımlayıcılarını (SID) listeler.
@UserNamePattern, @LoginNameve @PasswordNULL veya belirtilmemiş olmalıdır.Rapor seçeneğini sistem tablolarını kullanarak bir sorguyla değiştirmek için, sys.server_principals içindeki girdileri sys.database_principalsiçindeki girdilerle karşılaştırın. |
Update_One |
Geçerli veritabanında belirtilen @UserNamePattern var olan bir SQL Server @LoginNamebağlar.
@UserNamePattern ve @LoginName belirtilmelidir.
@PasswordNULL veya belirtilmemiş olmalıdır. |
[ @UserNamePattern = ] N'UserNamePattern'
Geçerli veritabanındaki bir kullanıcının adı.
[ @LoginName = ] N'LoginName'
SQL Server oturum açma adı.
[ @Password = ] N'Parola'
Auto_Fixbelirterek oluşturulan yeni bir SQL Server oturum açma bilgilerine atanan parola. sp_change_users_login yeni bir SQL Server oturumu oluşturur ve yeni oturum açma için parola olarak @Password atar.
Önemli
her zaman
Dönüş kodu değerleri
0 (başarı) veya 1 (başarısızlık).
Sonuç kümesi
| Sütun adı | Veri tipi | Açıklama |
|---|---|---|
UserName |
sysname |
Veritabanı kullanıcı adı. |
UserSID |
varbinary(85) | Kullanıcının güvenlik tanımlayıcısı. |
Açıklamalar
Geçerli veritabanındaki bir veritabanı kullanıcısını SQL Server oturum açma bilgileriyle bağlamak için sp_change_users_login kullanın. Kullanıcının oturum açma bilgileri değişirse, kullanıcı izinlerini kaybetmeden kullanıcıyı yeni oturum açma bilgilerine bağlamak için sp_change_users_login kullanın. Yeni @LoginNamesaolamaz ve @UserNamePatterndbo, guestveya INFORMATION_SCHEMA bir kullanıcı olamaz.
sp_change_users_login, veritabanı kullanıcılarını Windows düzeyindeki sorumlulara, sertifikalara veya asimetrik anahtarlara eşlemek için kullanılamaz.
sp_change_users_login bir Windows sorumlusundan oluşturulan SQL Server oturum açma bilgileriyle veya CREATE USER WITHOUT LOGINkullanılarak oluşturulan bir kullanıcıyla kullanılamaz.
sp_change_users_login kullanıcı tanımlı bir işlem içinde yürütülemez.
İzinler
Sabit db_owner veritabanı rolünde üyelik gerektirir.
seçeneğini yalnızca Auto_Fix sabit sunucu rolünün üyeleri belirtebilir.
Örnekler
Bu makaledeki kod örnekleri, AdventureWorks2022 giriş sayfasından indirebileceğiniz AdventureWorksDW2022 veya örnek veritabanını kullanır.
A. Oturum açma eşlemeleri için geçerli kullanıcının raporunu gösterme
Aşağıdaki örnek, geçerli veritabanındaki kullanıcıların ve güvenlik tanımlayıcılarının (SID) bir raporunu oluşturur.
EXECUTE sp_change_users_login 'Report';
B. Veritabanı kullanıcısını yeni bir SQL Server oturum açma bilgileriyle eşleme
Aşağıdaki örnekte, veritabanı kullanıcısı yeni bir SQL Server oturum açma bilgileriyle ilişkilendirilir. İlk başta başka bir oturum açmayla eşlenen veritabanı kullanıcısı MB-Sales, MaryBoturum açma ile yeniden eşlenir. değerini güçlü bir parolayla değiştirin <password> .
--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '<password>';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C. Kullanıcıyı otomatik olarak oturum açma bilgileriyle eşleyin ve gerekirse yeni oturum açma bilgileri oluşturun
Aşağıdaki örnekte, mevcut bir kullanıcıyı aynı ada sahip bir oturum açma bilgileriyle eşlemek veya oturum açma bilgileri yoksa Mary sql server oturum açma bilgilerini Mary parolayla oluşturmak için nasıl kullanılacağı Auto_Fix gösterilmektedir. değerini güçlü bir parolayla değiştirin <password> .
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO