Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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