Megosztás a következőn keresztül:


sp_change_users_login (Transact-SQL)

A következőkre vonatkozik:SQL Server

Meglévő adatbázis-felhasználót képez le EGY SQL Server-bejelentkezésre.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Ehelyett használja ALTER USER.

Transact-SQL szintaxis konvenciói

Szintaxis

sp_change_users_login
    [ @Action = ] 'Action'
    [ , [ @UserNamePattern = ] N'UserNamePattern' ]
    [ , [ @LoginName = ] N'LoginName' ]
    [ , [ @Password = ] N'Password' ]
[ ; ]

Érvek

[ @Action = ] 'Művelet'

A tárolt eljárás végrehajtandó műveletét ismerteti. @Actionvarchar(10), alapértelmezés nélkül, és az alábbi értékek egyikével rendelkezhet.

Érték Leírás
Auto_Fix Az aktuális adatbázis sys.database_principals rendszerkatalógus-nézetében lévő felhasználói bejegyzést egy azonos nevű SQL Server-bejelentkezéshez csatolja. Ha nem létezik ugyanazzal a névvel rendelkező bejelentkezés, létrejön egy. Vizsgálja meg a Auto_Fix utasítás eredményét, és győződjön meg arról, hogy a helyes hivatkozás valóban létrejött. Ne használjon Auto_Fix biztonsági szempontból érzékeny helyzetekben.

Ha Auto_Fixhasznál, meg kell adnia @UserNamePattern és @Password, ha a bejelentkezés még nem létezik, ellenkező esetben meg kell adnia @UserNamePattern, de a @Password figyelmen kívül hagyja. @LoginNameNULLkell lennie. @UserNamePattern érvényes felhasználónak kell lennie az aktuális adatbázisban. A bejelentkezéshez nem rendelhet hozzá másik felhasználót.
Report Felsorolja a felhasználókat és a megfelelő biztonsági azonosítókat (SID) az aktuális adatbázisban, amelyek nem kapcsolódnak semmilyen bejelentkezéshez. @UserNamePattern, @LoginNameés @PasswordNULL vagy nincs megadva.

Ha a jelentésbeállítást egy lekérdezésre szeretné cserélni a rendszertáblák használatával, hasonlítsa össze a sys.server_principals bejegyzéseit a sys.database_principalsbejegyzéseivel.
Update_One Az aktuális adatbázis megadott @UserNamePattern összekapcsolja egy meglévő SQL Server-@LoginName. @UserNamePattern és @LoginName meg kell adni. @PasswordNULL vagy nincs megadva.

[ @UserNamePattern = ] N'UserNamePattern'

Az aktuális adatbázisban lévő felhasználó neve. @UserNamePatternsysname, alapértelmezett értéke NULL.

[ @LoginName = ] N'LoginName'

Sql Server-bejelentkezés neve. @LoginNamesysname, alapértelmezett értéke NULL.

[ @Password = ] N'jelszó'

A Auto_Fixmegadásával létrehozott új SQL Server-bejelentkezéshez rendelt jelszó. @Passwordsysname, és nem lehet NULL. Ha már létezik egyező bejelentkezés, a rendszer leképezi a felhasználót és a bejelentkezést, és @Password figyelmen kívül hagyja. Ha nem létezik egyező bejelentkezés, sp_change_users_login létrehoz egy új SQL Server-bejelentkezést, és @Password rendel hozzá az új bejelentkezéshez.

Fontos

Mindig használjon erős jelszót.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Eredményhalmaz

Oszlop neve Adattípus Leírás
UserName sysname Adatbázis felhasználóneve.
UserSID varbinary(85) A felhasználó biztonsági azonosítója.

Megjegyzések

Az sp_change_users_login használatával összekapcsolhatja az aktuális adatbázisban lévő adatbázis-felhasználót egy SQL Server-bejelentkezéssel. Ha egy felhasználó bejelentkezése megváltozik, a sp_change_users_login segítségével csatolja a felhasználót az új bejelentkezéshez anélkül, hogy elveszítené a felhasználói engedélyeket. Az új @LoginName nem lehet sa, és a @UserNamePattern nem lehet dbo, guestvagy INFORMATION_SCHEMA felhasználó.

sp_change_users_login nem használható az adatbázis-felhasználók Windows-szintű tagokra, tanúsítványokra vagy aszimmetrikus kulcsokra való leképezésére.

sp_change_users_login nem használható windowsos rendszernévből vagy CREATE USER WITHOUT LOGINhasználatával létrehozott felhasználóval létrehozott SQL Server-bejelentkezéssel.

sp_change_users_login nem hajtható végre felhasználó által megadott tranzakción belül.

Engedélyek

A rögzített adatbázis-szerepkör db_owner tagságot igényel. A beállítást csak a Auto_Fix rögzített kiszolgálói szerepkör tagjai adhatják meg.

Példák

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

Egy. Az aktuális felhasználó jelentésének megjelenítése bejelentkezési leképezésekhez

Az alábbi példa egy jelentést készít az aktuális adatbázisban lévő felhasználókról és biztonsági azonosítóikról (SID-k).

EXECUTE sp_change_users_login 'Report';

B. Adatbázis-felhasználó leképezése új SQL Server-bejelentkezésre

Az alábbi példában egy adatbázis-felhasználó egy új SQL Server-bejelentkezéshez van társítva. Az adatbázis-felhasználó MB-Sales, amely először egy másik bejelentkezésre van leképezve, a rendszer a bejelentkezési MaryBfelelteti meg. Cserélje le <password> erős jelszóra.

--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. Felhasználó automatikus leképezése bejelentkezésre, és szükség esetén új bejelentkezés létrehozása

Az alábbi példa bemutatja, hogyan képezhet Auto_Fix le egy meglévő felhasználót egy azonos nevű bejelentkezésre, vagy hogyan hozhatja létre az SQL Server-bejelentkezést Mary jelszóval, ha a bejelentkezés Mary nem létezik. Cserélje le <password> erős jelszóra.

USE AdventureWorks2022;
GO

EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO