sp_change_users_login(Transact-SQL)
적용 대상: SQL Server
기존 데이터베이스 사용자를 SQL Server 로그인에 매핑합니다.
Important
SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 ALTER USER를 사용합니다.
구문
sp_change_users_login
[ @Action = ] 'Action'
[ , [ @UserNamePattern = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
인수
[ @Action = ] '작업'
수행할 저장 프로시저에 대한 작업을 설명합니다. @Action 기본값이 없는 varchar(10)이며 다음 값 중 하나를 가질 수 있습니다.
값 | 설명 |
---|---|
Auto_Fix |
현재 데이터베이스의 sys.database_principals 시스템 카탈로그 뷰에 있는 사용자 항목을 동일한 이름의 SQL Server 로그인에 연결합니다. 이름이 같은 로그인이 없으면 로그인이 만들어집니다. 문의 결과를 Auto_Fix 검토하여 올바른 링크가 실제로 만들어졌는지 확인합니다. 보안에 민감한 상황에서는 사용하지 Auto_Fix 마십시오.사용할 Auto_Fix 때는 @UserNamePattern 지정하고 로그인이 아직 없는 경우 @Password 지정해야 합니다. 그렇지 않으면 @UserNamePattern 지정해야 하지만 @Password 무시됩니다. @LoginName .NULL @UserNamePattern 현재 데이터베이스에서 유효한 사용자여야 합니다. 로그인에 다른 사용자를 매핑할 수 없습니다. |
Report |
로그인에 연결되지 않은 현재 데이터베이스의 사용자 및 해당 SID(보안 식별자)를 나열합니다. @UserNamePattern, @LoginName 및 @Password 지정하거나 NULL 지정하지 않아야 합니다.시스템 테이블을 사용하여 보고서 옵션을 쿼리로 바꾸려면 입력한 sys.server_prinicpals 항목을 의 항목과 비교합니다 sys.database_principals . |
Update_One |
현재 데이터베이스의 지정된 @UserNamePattern 기존 SQL Server @LoginName 연결합니다. @UserNamePattern 및 @LoginName 지정해야 합니다. @Password 지정하거나 NULL 지정하지 않아야 합니다. |
[ @UserNamePattern = ] N'UserNamePattern'
현재 데이터베이스에 있는 사용자의 이름입니다. @UserNamePattern sysname이며 기본값은 .입니다NULL
.
[ @LoginName = ] N'LoginName'
SQL Server 로그인의 이름입니다. @LoginName sysname이며 기본값은 .입니다NULL
.
[ @Password = ] N'암호'
를 지정 Auto_Fix
하여 만든 새 SQL Server 로그인에 할당된 암호입니다. @Password sysname이며 될 수 없습니다NULL
. 일치하는 로그인이 이미 있는 경우 사용자 및 로그인이 매핑되고 @Password 무시됩니다. 일치하는 로그인이 없 sp_change_users_login
으면 새 SQL Server 로그인을 만들고 @Password 새 로그인의 암호로 할당합니다.
Important
항상 강력한 암호를 사용합니다.
반환 코드 값
0
(성공) 또는 1
(실패).
결과 집합
열 이름 | 데이터 형식 | 설명 |
---|---|---|
UserName |
sysname | 데이터베이스 사용자 이름입니다. |
UserSID |
varbinary(85) | 사용자의 보안 식별자입니다. |
설명
현재 데이터베이스의 데이터베이스 사용자를 SQL Server 로그인과 연결하는 데 사용합니다 sp_change_users_login
. 사용자에 대한 로그인이 변경되면 사용자 권한을 잃지 않고 사용자를 새 로그인에 연결하는 데 사용합니다 sp_change_users_login
. 새 @LoginName 수 sa
없으며 @UserNamePattern 사용자일 dbo
guest
INFORMATION_SCHEMA
수 없습니다.
sp_change_users_login
는 데이터베이스 사용자를 Windows 수준 보안 주체, 인증서 또는 비대칭 키에 매핑하는 데 사용할 수 없습니다.
sp_change_users_login
은 Windows 보안 주체에서 만든 SQL Server 로그인이나 을 사용하여 만든 사용자와 함께 사용할 CREATE USER WITHOUT LOGIN
수 없습니다.
sp_change_users_login
는 사용자 정의 트랜잭션 내에서 실행할 수 없습니다.
사용 권한
db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다. sysadmin 고정 서버 역할의 멤버만 옵션을 지정할 Auto_Fix
수 있습니다.
예제
이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022
또는 AdventureWorksDW2022
샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.
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. 사용자를 로그인에 자동으로 매핑하고 필요한 경우 새 로그인을 만듭니다.
다음 예제에서는 기존 사용자를 동일한 이름의 로그인에 매핑하거나 로그인이 없는 경우 Mary
암호 B3r12-3x$098f6
인 SQL Server 로그인 Mary
을 만드는 방법을 Auto_Fix
보여줍니다.
USE AdventureWorks2022;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO