다음을 통해 공유


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 사용할 때는 주의해야 합니다. 이 절차는 포함된 데이터베이스에서만 사용됩니다. 자세한 내용은 포함된 데이터베이스를 참조하세요.

구문

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

반환 코드 값

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

설명

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

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

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

  • 기본 제공 사용자(예: dbo 및 게스트)는 변환할 수 없습니다.

  • 서명된 저장 프로시저의 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 ;  

참고 항목

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