Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Namapuje existujícího uživatele databáze na přihlášení k SQL Serveru.
Důležitý
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Místo toho použijte ALTER USER.
Syntaxe
sp_change_users_login
[ @Action = ] 'Action'
[ , [ @UserNamePattern = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
Argumenty
[ @Action = ] 'Akce'
Popisuje akci, kterou má uložená procedura provést. @Action je varchar(10), bez výchozí hodnoty a může mít jednu z následujících hodnot.
| Hodnota | Popis |
|---|---|
Auto_Fix |
Pro propojení položky uživatele v zobrazení katalogu systému sys.database_principals v aktuální databázi na přihlašovací jméno sql Serveru. Pokud přihlašovací jméno se stejným názvem neexistuje, vytvoří se. Zkontrolujte výsledek z příkazu Auto_Fix a ověřte, že je ve skutečnosti proveden správný odkaz. Nepoužívejte Auto_Fix v situacích citlivých na zabezpečení.Při použití Auto_Fixje nutné zadat @UserNamePattern a @Password, pokud přihlášení ještě neexistuje, jinak musíte zadat @UserNamePattern, ale @Password bude ignorován.
@LoginName musí být NULL.
@UserNamePattern musí být platným uživatelem v aktuální databázi. Přihlášení nemůže mít namapovaný jiný uživatel. |
Report |
Vypíše uživatele a odpovídající identifikátory zabezpečení (SID) v aktuální databázi, které nejsou propojené s žádným přihlášením.
@UserNamePattern, @LoginNamea @Password musí být NULL nebo nesmí být zadány.Pokud chcete nahradit možnost sestavy dotazem pomocí systémových tabulek, porovnejte položky v sys.server_principals s položkami v sys.database_principals. |
Update_One |
Pro propojení zadaných @UserNamePattern v aktuální databázi na existující @LoginNameSQL Serveru . musí být zadány @UserNamePattern a @LoginName.
@Password musí být NULL nebo nezadá. |
[ @UserNamePattern = ] N'UserNamePattern'
Jméno uživatele v aktuální databázi.
@UserNamePattern je sysname , s výchozím NULL.
[ @LoginName = ] N'LoginName'
Název přihlášení k SQL Serveru.
@LoginName je sysname , s výchozím NULL.
[ @Password = ] N'heslo'
Heslo přiřazené k novému přihlášení k SQL Serveru, které je vytvořeno zadáním Auto_Fix.
@Password je sysname a nemůže být NULL. Pokud již existuje odpovídající přihlášení, uživatel a přihlášení se mapují a @Password se ignoruje. Pokud odpovídající přihlášení neexistuje, sp_change_users_login vytvoří nové přihlášení k SQL Serveru a přiřadí @Password jako heslo pro nové přihlášení.
Důležitý
Vždy používejtesilné heslo
Návratové hodnoty kódu
0 (úspěch) nebo 1 (selhání).
Sada výsledků
| Název sloupce | Datový typ | Popis |
|---|---|---|
UserName |
|
Uživatelské jméno databáze. |
UserSID |
varbinary(85) | Identifikátor zabezpečení uživatele. |
Poznámky
Pomocí sp_change_users_login můžete propojit uživatele databáze v aktuální databázi s přihlášením k SQL Serveru. Pokud se přihlášení uživatele změní, použijte sp_change_users_login k propojení uživatele s novým přihlášením bez ztráty uživatelských oprávnění. Nový @LoginName nemůže být saa @UserNamePattern nemůže být dbo, guestani uživatele INFORMATION_SCHEMA.
sp_change_users_login nelze použít k mapování uživatelů databáze na objekty zabezpečení, certifikáty nebo asymetrické klíče na úrovni Windows.
sp_change_users_login nelze použít s přihlášením k SQL Serveru vytvořenému z objektu zabezpečení Systému Windows nebo s uživatelem vytvořeným pomocí CREATE USER WITHOUT LOGIN.
sp_change_users_login nelze spustit v rámci uživatelem definované transakce.
Dovolení
Vyžaduje členství v db_owner pevné databázové roli. Možnost
Příklady
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
A. Zobrazení sestavy aktuálního uživatele pro mapování přihlášení
Následující příklad vytvoří sestavu uživatelů v aktuální databázi a jejich identifikátory zabezpečení (SID).
EXECUTE sp_change_users_login 'Report';
B. Mapování uživatele databáze na nové přihlášení k SQL Serveru
V následujícím příkladu je uživatel databáze přidružený k novému přihlášení k SQL Serveru. Uživatel databáze MB-Sales, který je nejprve namapován na jiné přihlášení, je znovu namapován na přihlášení MaryB. Nahraďte <password> silným heslem.
--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. Automaticky namapovat uživatele na přihlášení a v případě potřeby vytvořit nové přihlášení
Následující příklad ukazuje, jak použít Auto_Fix k mapování existujícího uživatele na přihlášení se stejným názvem nebo k vytvoření přihlášení Mary k SQL Serveru s heslem, pokud Mary přihlášení neexistuje. Nahraďte <password> silným heslem.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO
Související obsah
- uložené procedury zabezpečení (Transact-SQL)
-
CREATE LOGIN (Transact-SQL) -
sp_adduser (Transact-SQL) -
sp_helplogins (Transact-SQL) - uložené procedury systému (Transact-SQL)
-
sys.database_principals (Transact-SQL)