Aracılığıyla paylaş


sp_change_users_login (Transact-SQL)

Şunlar için geçerlidir: SQL Server

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. @Actionvarchar(10) değeridir ve aşağıdaki değerlerden birine sahip olabilir.

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ı. @UserNamePattern, varsayılanı ilesysname'dir.

[ @LoginName = ] N'LoginName'

SQL Server oturum açma adı. @LoginName sysnameve varsayılan olarak .

[ @Password = ] N'Parola'

Auto_Fixbelirterek oluşturulan yeni bir SQL Server oturum açma bilgilerine atanan parola. @Passwordsysname'dir ve olamaz. Eşleşen oturum açma bilgileri zaten varsa kullanıcı ve oturum açma bilgileri eşlenir ve @Password yoksayılır. Eşleşen oturum açma bilgileri yoksa, 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 güçlü bir parola kullanın.

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