Sdílet prostřednictvím


sp_change_users_login (Transact-SQL)

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.

Transact-SQL konvence syntaxe

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 sysname 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 můžou zadat pouze členové pevné role správce systému serveru.

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