sp_migrate_user_to_contained(Transact-SQL)

적용 대상: SQL Server(지원되는 모든 버전)

SQL Server 로그인에 매핑된 데이터베이스 사용자를 암호가 있는 포함된 데이터베이스 사용자로 변환합니다. 포함된 데이터베이스에서 이 절차를 사용하여 데이터베이스가 설치된 SQL Server 인스턴스에 대한 종속성을 제거합니다. sp_migrate_user_to_contained 암호 및 기본 언어와 같은 설정을 포함된 데이터베이스에 대해 별도로 관리할 수 있도록 사용자를 원래 SQL Server 로그인과 구분합니다. 포함된 데이터베이스를 SQL Server 데이터베이스 엔진의 다른 인스턴스로 이동하기 전에 sp_migrate_user_to_contained 사용하여 현재 SQL Server 인스턴스 로그인에 대한 종속성을 제거할 수 있습니다.

참고

효과를 되돌릴 수 없으므로 sp_migrate_user_to_contained 사용할 때는 주의해야 합니다. 이 절차는 포함된 데이터베이스에서만 사용됩니다. 자세한 내용은 Contained Databases을 참조하세요.

구문

  
sp_migrate_user_to_contained [ @username = ] N'user' ,   
    [ @rename = ] { N'copy_login_name' | N'keep_name' } ,   
    [ @disablelogin = ] { N'disable_login' | N'do_not_disable_login' }   

인수

[@username = ] N'user'
SQL Server 인증 로그인에 매핑된 현재 포함된 데이터베이스의 사용자 이름입니다. 값은 sysname이며 기본값은 NULL입니다.

[@rename = ] N'copy_login_name' | N'keep_name'
로그인을 기반으로 하는 데이터베이스 사용자가 로그인 이름과 다른 사용자 이름을 갖는 경우 마이그레이션 중에 keep_name 사용하여 데이터베이스 사용자 이름을 유지합니다. copy_login_name 사용하여 사용자 대신 로그인 이름으로 포함된 새 데이터베이스 사용자를 만듭니다. 로그인 기반 데이터베이스 사용자의 사용자 이름이 로그인 이름과 같으면 두 옵션 모두 이름을 변경하지 않고 포함된 데이터베이스 사용자를 만듭니다.

[@disablelogin = ] N'disable_login' | do_not_disable_login'
disable_login 마스터 데이터베이스에서 로그인을 사용하지 않도록 설정합니다. 로그인을 사용하지 않도록 설정할 때 연결하려면 연결 문자열의 일부로 포함된 데이터베이스 이름을 초기 카탈로그 로 제공해야 합니다.

반환 코드 값

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

설명

sp_migrate_user_to_contained 로그인의 속성이나 사용 권한에 관계없이 암호가 포함된 데이터베이스 사용자를 만듭니다. 예를 들어 로그인을 사용하지 않도록 설정하거나 사용자에게 데이터베이스에 대한 CONNECT 권한이 거부된 경우 프로시저가 성공할 수 있습니다.

sp_migrate_user_to_contained 다음과 같은 제한 사항이 있습니다.

  • 사용자 이름은 아직 데이터베이스에 없는 이름이어야 합니다.

  • dbo, guest 등의 기본 제공 사용자는 변환할 수 없습니다.

  • 서명된 저장 프로시저의 EXECUTE AS 절에서 사용자를 지정할 수 없습니다.

  • 사용자는 EXECUTE AS OWNER 절을 포함하는 저장 프로시저를 소유할 수 없습니다.

  • sp_migrate_user_to_contained 시스템 데이터베이스에서 사용할 수 없습니다.

보안

사용자를 마이그레이션할 때는 SQL Server 인스턴스에서 모든 관리자 로그인을 사용하지 않도록 설정하거나 삭제하지 않도록 주의해야 합니다. 모든 로그인이 삭제된 경우 시스템 관리자가 잠겨 있는 경우 SQL Server 연결을 참조하세요.

BUILTIN\Administrators 로그인이 있는 경우 관리자는 관리자 권한으로 실행 옵션을 사용하여 애플리케이션을 시작하여 연결할 수 있습니다.

사용 권한

CONTROL SERVER 권한이 필요합니다.

예제

A. 단일 사용자 마이그레이션

다음 예제에서는 이름이 인 BarrySQL Server 로그인을 암호가 있는 포함된 데이터베이스 사용자로 마이그레이션합니다. 이 예제에서는 사용자 이름을 변경하지 않고 로그인을 활성화된 상태로 유지합니다.

sp_migrate_user_to_contained   
@username = N'Barry',  
@rename = N'keep_name',  
@disablelogin = N'do_not_disable_login' ;  
  

B. 로그인을 포함하는 모든 데이터베이스 사용자를 로그인을 포함하지 않는 포함된 데이터베이스 사용자로 마이그레이션

다음 예에서는 SQL Server 로그인을 기반으로 하는 모든 사용자를 암호를 가진 포함된 데이터베이스 사용자로 마이그레이션합니다. 이 예에서는 활성화되지 않은 로그인을 제외합니다. 이 예는 포함된 데이터베이스에서 실행해야 합니다.

DECLARE @username sysname ;  
DECLARE user_cursor CURSOR  
    FOR   
        SELECT dp.name   
        FROM sys.database_principals AS dp  
        JOIN sys.server_principals AS sp   
        ON dp.sid = sp.sid  
        WHERE dp.authentication_type = 1 AND sp.is_disabled = 0;  
OPEN user_cursor  
FETCH NEXT FROM user_cursor INTO @username  
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
        EXECUTE sp_migrate_user_to_contained   
        @username = @username,  
        @rename = N'keep_name',  
        @disablelogin = N'disable_login';  
    FETCH NEXT FROM user_cursor INTO @username  
    END  
CLOSE user_cursor ;  
DEALLOCATE user_cursor ;  

참고 항목

부분적으로 포함된 데이터베이스로 마이그레이션
포함된 데이터베이스