분리 및 연결을 사용하여 데이터베이스 업그레이드(Transact-SQL)

적용 대상:SQL Server

이 항목에서는 분리 및 연결 작업을 사용하여 SQL Server에서 데이터베이스를 업그레이드하는 방법을 설명합니다. SQL Server에 연결되면 데이터베이스를 즉시 사용할 수 있으며 자동으로 업그레이드됩니다. 이렇게 하면 데이터베이스가 이전 버전의 데이터베이스 엔진과 함께 사용되지 않습니다. 그러나 메타데이터 업그레이드는 데이터베이스의 데이터베이스 호환성 수준 설정에 영향을 주지 않습니다. 이 항목의 뒷부분에 있는 업그레이드 후 데이터베이스 호환성 수준에서 자세한 내용을 참조하세요.

항목 내용

시작하기 전에

제한 사항

  • 시스템 데이터베이스를 연결할 수 없습니다.

  • 연결 및 분리는 데이터베이스 간 소유권 체인 옵션을 0으로 설정하여 데이터베이스에 대한 데이터베이스 간 소유권 체인을 해제합니다. 체인 설정 방법은 cross db ownership chaining 서버 구성 옵션을 참조하세요.

  • 분리되지 않고 복사된 복제된 데이터베이스를 연결하는 경우:

    • 데이터베이스를 동일한 서버 인스턴스의 업그레이드된 버전에 연결하는 경우 연결 작업이 완료된 후 sp_vupgrade_replication 실행하여 복제를 업그레이드해야 합니다. 자세한 내용은 sp_vupgrade_replication(Transact-SQL)를 참조 하세요.

    • 버전에 관계없이 다른 서버 인스턴스에 데이터베이스를 연결하는 경우 연결 작업이 완료된 후 sp_removedbreplication 을 실행하여 복제를 제거해야 합니다. 자세한 내용은 sp_removedbreplication(Transact-SQL)를 참조 하세요.

추천

알 수 없거나 신뢰할 수 없는 원본에서 데이터베이스를 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB 를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.

분리 및 연결을 사용하여 데이터베이스를 업그레이드하려면

  1. 데이터베이스를 분리합니다. 자세한 내용은 데이터베이스 분리를 참조하세요.

  2. 필요에 따라 분리된 데이터베이스 파일 또는 파일과 로그 파일 또는 파일을 이동합니다.

    새 로그 파일을 만들려는 경우에도 데이터 파일뿐만 아니라 로그 파일도 이동해야 합니다. 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다. 따라서 데이터베이스가 연결되지 않고 성공적으로 연결될 때까지 항상 모든 분리된 로그 파일을 유지합니다.

    참고 항목

    로그 파일을 지정하지 않고 데이터베이스를 연결하려고 하면 연결 작업에서 원래 위치에서 로그 파일을 찾습니다. 로그의 원본 복사본이 여전히 해당 위치에 있는 경우 해당 복사본이 연결됩니다. 원래 로그 파일을 사용하지 않도록 하려면 새 로그 파일의 경로를 지정하거나 로그 파일의 원본 복사본을 제거합니다(새 위치에 복사한 후).

  3. 복사한 파일을 SQL Server 인스턴스에 연결합니다. 자세한 내용은 Attach a Database을 참조하세요.

다음 예제에서는 이전 버전의 SQL Server에서 데이터베이스 복사본을 업그레이드합니다. Transact-SQL 문은 연결된 서버 인스턴스에 연결된 쿼리 편집기 창에서 실행됩니다.

  1. 다음 Transact-SQL 문을 실행하여 데이터베이스를 분리합니다.

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. 선택한 방법을 사용하여 데이터 및 로그 파일을 새 위치로 복사합니다.

    Important

    프로덕션 데이터베이스의 경우 가급적 데이터베이스와 트랜잭션 로그를 별도의 디스크에 저장합니다. 이러한 드라이브는 서로 다른 I/O 및 파일 증가 요구 사항을 구동하며 별도로 유지하는 것이 가장 좋은 사례로 간주됩니다.

    네트워크를 통해 원격 컴퓨터의 디스크에 파일을 복사하려면 원격 위치의 UNC(범용 명명 규칙) 이름을 사용합니다. UNC 이름은 형식 \\Servername\Sharename\Path\Filename을 사용합니다. 로컬 하드 디스크에 파일을 쓰는 것과 마찬가지로 원격 디스크의 파일을 읽거나 쓰는 데 필요한 적절한 권한을 SQL Server 인스턴스에서 사용하는 사용자 계정에 부여해야 합니다.

  3. 이동된 데이터베이스를 연결하고 필요에 따라 다음 Transact-SQL 문을 실행하여 해당 로그를 연결합니다.

    USE master;  
    GO  
    CREATE DATABASE MyDatabase   
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),  
        (FILENAME = 'C:\MySQLServer\Database.ldf')  
        FOR ATTACH;  
    GO  
    

    SQL Server Management Studio에서 새로 연결된 데이터베이스는 개체 탐색기에 즉시 표시되지 않습니다. 데이터베이스를 보려면 개체 탐색기에서 보기를 클릭한 다음 새로 고침을 클릭합니다. 개체 탐색기에서 데이터베이스 노드가 확장되면 이제 새로 연결된 데이터베이스가 데이터베이스 목록에 표시됩니다.

후속 작업: SQL Server 데이터베이스 업그레이드 후

데이터베이스에 전체 텍스트 인덱스가 있는 경우 업그레이드 프로세스는 upgrade_option 서버 속성의 설정에 따라 인덱스를 가져오거나, 다시 설정하거나, 다시 작성합니다. 업그레이드 옵션이 가져오기(upgrade_option = 2) 또는 다시 작성(upgrade_option = 0)으로 설정되어 있는 경우 업그레이드하는 동안 전체 텍스트 인덱스를 사용할 수 없습니다. 인덱싱되는 데이터의 양에 따라 가져오기에는 몇 시간이 걸릴 수 있으며 다시 빌드하는 데 최대 10배가 걸릴 수 있습니다. 업그레이드 옵션이 가져오기로 설정되어 있으면 전체 텍스트 카탈로그를 사용할 수 없는 경우 관련된 전체 텍스트 인덱스가 다시 작성됩니다. upgrade_option 서버 속성의 설정을 변경하려면 sp_fulltext_service를 사용합니다.

업그레이드 후 데이터베이스 호환성 수준

업그레이드 후에는 이전 호환성 수준이 새 버전에서 지원되지 않는 한 업그레이드 전에 데이터베이스 호환성 수준이 호환성 수준에 유지됩니다. 이 경우 업그레이드된 데이터베이스 호환성 수준이 지원되는 가장 낮은 호환성 수준으로 설정됩니다.

예를 들어 SQL Server 2019(15.x) 인스턴스에 연결하기 전에 호환성 수준 90인 데이터베이스를 연결한 경우 업그레이드 후 호환성 수준이 SQL Server 2019(15.x)에서 지원되는 가장 낮은 호환성 수준인 100으로 설정됩니다. 자세한 내용은 ALTER DATABASE 호환성 수준(Transact-SQL)을 참조하세요.

업그레이드된 서버 인스턴스에서 메타데이터 관리

데이터베이스를 다른 서버 인스턴스에 연결하여 사용자 및 애플리케이션에 일관된 환경을 제공하기 위해 다른 서버 인스턴스에서 로그인, 작업 및 사용 권한과 같은 데이터베이스에 대한 메타데이터의 일부 또는 전부를 다시 만들어야 할 수 있습니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요.

3DES에서 AES로의 서비스 마스터 키 및 데이터베이스 마스터 키 암호화 변경

SQL Server 2012(11.x) 이상 버전에서는 AES 암호화 알고리즘을 사용하여 SMK(서비스 마스터 키) 및 DMK(데이터베이스 마스터 키)를 보호합니다. AES는 이전 버전에서 사용하는 3DES보다 최신 암호화 알고리즘입니다. 데이터베이스가 새 SQL Server인스턴스로 처음으로 연결되거나 복원될 때 데이터베이스 마스터 키(서비스 마스터 키로 암호화됨)의 복사본은 서버에 아직 저장되지 않은 상태입니다. DMK(데이터베이스 마스터 키)의 암호를 해독하려면 이 문을 사용해야 OPEN MASTER KEY 합니다. DMK가 암호 해독되면 문을 사용하여 ALTER MASTER KEY REGENERATE SMK(서비스 마스터 키)로 암호화된 DMK 복사본으로 서버를 프로비전하여 나중에 자동 암호 해독을 사용하도록 설정할 수 있습니다. 데이터베이스가 이전 버전에서 업그레이드되지 않은 경우에는 DMK를 다시 생성해야 최신 AES 알고리즘을 사용할 수 있습니다. DMK를 다시 생성하는 방법은 ALTER MASTER KEY(Transact-SQL)를 참조하세요. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 데 소요되는 시간은 DMK에서 보호하는 개체 수에 따라 달라집니다. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 작업은 한 번만 필요하며 키 회전 전략의 일부로 이후에 수행하는 다시 생성 작업에 영향을 주지 않습니다.