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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
A felhasználók árvaként jelennek meg az SQL Serverben, ha egy adatbázis-felhasználó az master adatbázisban való bejelentkezésen alapul, de a bejelentkezés már nem létezik az masteradatbázisban. Ez akkor fordulhat elő, ha a bejelentkezést törlik, vagy ha az adatbázist egy másik kiszolgálóra helyezik át, amelyen a bejelentkezés nem létezik. Ez a cikk azt ismerteti, hogyan találhatja meg az árva felhasználókat, és hogyan rendelheti őket újra bejelentkezésekhez.
Megjegyzés:
Csökkentse az árva felhasználók lehetőségét, ha tartalmazott adatbázis-felhasználókat használ az áthelyezhető adatbázisokhoz. További információ: Az adatbázis hordozhatóvá tétele tartalmazott adatbázisokhasználatával.
Fontos
A sp_change_users_login tárolt eljárást korábban az árva felhasználók kijavítására használták, de most elavult. Használja ALTER USER ... WITH LOGIN inkább az árva felhasználók feloldása című szakaszban leírtak szerint. További információ: sp_change_users_login (Transact-SQL).
Háttér
Ha az SQL Server egy példányán lévő adatbázishoz való csatlakozáshoz egy bejelentkezésen alapuló biztonsági azonosítót (adatbázis-felhasználói identitást) használ, akkor a biztonsági azonosítónak érvényes bejelentkezéssel kell rendelkeznie az master adatbázisban. Ezt a bejelentkezést használja a hitelesítési folyamat, amely ellenőrzi a megbízó identitását, és meghatározza, hogy a megbízó csatlakozhat-e az SQL Server példányához. A kiszolgálópéldányok SQL Server-bejelentkezései a sys.server_principals katalógusnézetben és a sys.sql_logins kompatibilitási nézetben láthatók.
Az SQL Server-bejelentkezések az egyes adatbázisokhoz az SQL Server-bejelentkezéshez leképezett "adatbázis-felhasználóként" férnek hozzá. A szabálynak három kivétele van:
Tartalmazott adatbázis-felhasználók
A tárolt adatbázis felhasználói a felhasználói adatbázis szintjén hitelesítik magukat, és nincsenek bejelentkezésekhez társítva. Ez a modell azért ajánlott, mert az adatbázisok hordozhatóbbak, és a tárolt adatbázis-felhasználók nem válhatnak árvatá. Ezeket azonban minden adatbázishoz újra létre kell hozni. Ez a modell nem praktikus egy olyan környezetben, amely sok adatbázissal rendelkezik.
A vendégfiók
Ha engedélyezve van egy adatbázisban, ez a fiók engedélyezi az adatbázis-felhasználóhoz nem hozzárendelt SQL Server-bejelentkezéseket, hogy vendégfelhasználóként hozzáférjenek az adatbázishoz. A vendégfiók alapértelmezés szerint le van tiltva.
Microsoft Windows-csoporttagságok
A Windows-felhasználó által létrehozott SQL Server-bejelentkezések akkor férhetnek hozzá az adatbázisokhoz, ha a Windows-felhasználó tagja egy Olyan Windows-csoportnak, amely szintén az adatbázisban lévő felhasználó.
Az SQL Server-bejelentkezés adatbázis-felhasználóhoz való leképezésével kapcsolatos információk az adatbázisban találhatók. Tartalmazza az adatbázis-felhasználó nevét és a megfelelő SQL Server-bejelentkezés biztonsági azonosítóját (SID). Az adatbázis-felhasználó engedélyeit a rendszer az adatbázisban való engedélyezéshez alkalmazza.
Egy adatbázis-felhasználó (bejelentkezés alapján), amelyhez a megfelelő SQL Server-bejelentkezés nincs meghatározva, vagy helytelenül van definiálva egy kiszolgálópéldányon, nem tud bejelentkezni a példányba. Az ilyen felhasználó az adott kiszolgálópéldány adatbázisának árva felhasználója . Árvaság akkor fordulhat elő, ha az adatbázis-felhasználó olyan bejelentkezésre SID van leképezve, amely nem szerepel az master adatbázisban. Az adatbázis-felhasználók árvává válhatnak, ha egy adatbázist visszaállítanak, vagy egy másik SQL Server-példányhoz csatolnak, ahol a bejelentkezés soha nem jött létre. Az adatbázis-felhasználók árvatá válhatnak, ha a megfelelő SQL Server-bejelentkezést elvetik. Még ha a bejelentkezés újra létrejön is, egy másik SID-val rendelkezik, így az adatbázis-felhasználó továbbra is árva marad.
Árva felhasználók észlelése
SQL Server és PDW esetén
Ha hiányzó SQL Server-hitelesítési bejelentkezések alapján szeretné észlelni az árva felhasználókat az SQL Serverben, futtassa a következő utasítást a felhasználói adatbázisban:
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';
A kimenet felsorolja az SQL Server-hitelesítés felhasználóit és a megfelelő SID-ket az aktuális adatbázisban, amelyek nincsenek egyetlen SQL Server-bejelentkezéshez sem csatolva.
Az Azure SQL Database és az Azure Synapse Analytics esetében
A sys.server_principals tábla nem érhető el az SQL Database-ben vagy az Azure Synapse Analyticsben. Az árva felhasználók azonosításához hajtsa végre az alábbi lépéseket:
Csatlakozzon az
masteradatbázishoz, és válassza ki a bejelentkezések azonosítóit az alábbi lekérdezéssel:SELECT sid FROM sys.sql_logins WHERE type = 'S';Csatlakozzon a felhasználói adatbázishoz, és tekintse át a táblázatban szereplő
sys.database_principalsfelhasználók SID-jét az alábbi lekérdezéssel: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';Hasonlítsa össze a két listát annak megállapításához, hogy vannak-e olyan felhasználói SID-k a felhasználói adatbázistáblában
sys.database_principals, amelyek nem egyeznek meg azmasteradatbázistáblasql_loginsbejelentkezési azonosítóival.
Árva felhasználó feloldása
Az adatbázisban használja a masterCREATE LOGIN utasítást a SID hiányzó felhasználói fiók újbóli létrehozásához. Adja meg az előző szakaszban beszerzett adatbázis-felhasználó azonosítóját SID.
CREATE LOGIN <login_name>
WITH PASSWORD = '<use_a_strong_password_here>',
SID = <SID>;
Ha egy árva felhasználót olyan bejelentkezéshez szeretne hozzárendelni, amely már létezik master, futtassa az ALTER USER utasítást a felhasználói adatbázisban, és adja meg a bejelentkezési nevet:
ALTER USER <user_name> WITH Login = <login_name>;
Hiányzó bejelentkezés újbóli létrehozásakor a felhasználó a megadott jelszóval férhet hozzá az adatbázishoz. A felhasználó ezután az utasítással ALTER LOGIN módosíthatja a bejelentkezési fiók jelszavát:
ALTER LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
Fontos
Minden bejelentkezés megváltoztathatja a saját jelszavát. Csak az ALTER ANY LOGIN engedéllyel rendelkező bejelentkezések módosíthatják egy másik felhasználó bejelentkezési jelszavát. Azonban csak a sysadmin szerepkör tagjai módosíthatják a sysadmin szerepkör tagjainak jelszavát.
Elavult módszerek
Az SQL Server korábbi verzióiban az sp_change_users_login tárolt eljárást az árva felhasználók összekapcsolására használták. Ez az eljárás elavult, és lehetséges, hogy egy későbbi verzióban el lesz távolítva. A ALTER USER használható helyette.
Az alábbi táblázat a gyakori sp_change_users_login műveletek egyenértékű modern szintaxisát mutatja be:
| Elavult szintaxis | Javasolt helyettesítés |
|---|---|
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> |
További információ: sp_change_users_login (Transact-SQL).