sp_change_users_login(Transact-SQL)

적용 대상:SQL Server

기존 데이터베이스 사용자를 SQL Server 로그인에 지도.

Important

이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 ALTER USER를 사용합니다.

Transact-SQL 구문 표기 규칙

구문

  
sp_change_users_login [ @Action = ] 'action'   
    [ , [ @UserNamePattern = ] 'user' ]   
    [ , [ @LoginName = ] 'login' ]   
    [ , [ @Password = ] 'password' ]  
[;]  

인수

[ @Action= ] 'action'
프로시저에서 수행할 작업에 대해 설명합니다. action은 varchar(10)입니다. 작업은 다음 값 중 하나를 가질 수 있습니다.

설명
Auto_Fix 현재 데이터베이스의 sys.database_principals 시스템 카탈로그 뷰에 있는 사용자 항목을 동일한 이름의 SQL Server 로그인에 연결합니다. 이름이 같은 로그인이 없으면 로그인이 만들어집니다. Auto_Fix 문의 결과를 검토하여 올바른 링크가 실제로 만들어졌는지 확인합니다. 보안에 민감한 상황에서는 Auto_Fix 사용하지 마십시오.

Auto_Fix 사용하는 경우 로그인이 아직 없는 경우 사용자암호를 지정해야 합니다. 그렇지 않으면 사용자를 지정해야 하지만 암호는 무시됩니다. 로그인 은 NULL이어야 합니다. 사용자는 현재 데이터베이스에서 유효한 사용자여야 합니다. 로그인에 다른 사용자를 매핑할 수 없습니다.
Report 현재 데이터베이스에서 어떠한 로그인에도 연결되지 않은 사용자와 해당 SID(보안 식별자)를 나열합니다. 사용자, 로그인암호 는 NULL이거나 지정하지 않아야 합니다.

시스템 테이블을 사용하여 보고서 옵션을 쿼리로 바꾸려면 sys.server_prinicpals 항목을 sys.database_principals 항목과 비교합니다.
Update_One 현재 데이터베이스의 지정된 사용자를 기존 SQL Server 로그인에 연결합니다. 사용자로그인 을 지정해야 합니다. 암호 는 NULL이거나 지정하지 않아야 합니다.

[ @UserNamePattern= ] 'user'
현재 데이터베이스에 있는 사용자의 이름입니다. 사용자는 sysname이며 기본값은 NULL입니다.

[ @LoginName= ] 'login'
SQL Server 로그인의 이름입니다. loginsysname이며 기본값은 NULL입니다.

[ @Password= ] 'password'
Auto_Fix 지정하여 만든 새 SQL Server 로그인에 할당된 암호입니다. 일치하는 로그인이 이미 있는 경우 사용자 및 로그인이 매핑되고 암호 가 무시됩니다. 일치하는 로그인이 없으면 sp_change_users_login 새 SQL Server 로그인을 만들고 암호를 새 로그인의 암호로 할당합니다. 암호sysname이며 NULL이 아니어야 합니다.

Important

항상 강력한 암호를 사용 하세요!

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

열 이름 데이터 형식 설명
UserName sysname 데이터베이스 사용자 이름입니다.
UserSID varbinary(85) 사용자의 보안 식별자입니다.

설명

sp_change_users_login 사용하여 현재 데이터베이스의 데이터베이스 사용자를 SQL Server 로그인과 연결합니다. 사용자 로그인이 변경된 경우 sp_change_users_login 사용하여 사용자 권한을 잃지 않고 사용자를 새 로그인에 연결합니다. 새 로그인은 sa일 수 없으며 사용자는 dbo, 게스트 또는 INFORMATION_SCHEMA 사용자일 수 없습니다.

sp_change_users_login 사용하여 데이터베이스 사용자를 Windows 수준 보안 주체, 인증서 또는 비대칭 키에 매핑할 수 없습니다.

sp_change_users_login Windows 보안 주체에서 만든 SQL Server 로그인이나 LOGIN 없이 CREATE USER를 사용하여 만든 사용자와 함께 사용할 수 없습니다.

sp_change_users_login 사용자 정의 트랜잭션 내에서 실행할 수 없습니다.

사용 권한

db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다. sysadmin 고정 서버 역할의 멤버만 Auto_Fix 옵션을 지정할 수 있습니다.

예제

A. 현재 사용자와 로그인 간의 매핑에 대한 보고서 표시

다음 예제에서는 현재 데이터베이스의 사용자와 SID(보안 식별자)에 대한 보고서를 생성합니다.

EXEC sp_change_users_login 'Report';  

B. 새 SQL Server 로그인에 데이터베이스 사용자 매핑

다음 예제에서는 데이터베이스 사용자가 새 SQL Server 로그인과 연결됩니다. 처음에는 다른 로그인에 매핑된 데이터베이스 사용자가 MB-Sales로그인 MaryB에 다시 매핑됩니다.

--Create the new login.  
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';  
GO  
--Map database user MB-Sales to login MaryB.  
USE AdventureWorks2022;  
GO  
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';  
GO  

C. 사용자를 로그인에 자동으로 매핑하고 필요한 경우 새 로그인을 만듭니다.

다음 예제에서는 기존 사용자를 동일한 이름의 로그인에 매핑하거나 로그인이 없는 경우 암호 B3r12-3x$098f6 가 있는 SQL Server 로그인 MaryMary 만드는 방법을 Auto_Fix 보여줍니다.

USE AdventureWorks2022;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

참고 항목

보안 저장 프로시저(Transact-SQL)
CREATE LOGIN(Transact-SQL)
sp_adduser(Transact-SQL)
sp_helplogins(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)
sys.database_principals(Transact-SQL)