분리 및 연결을 사용하여 데이터베이스 업그레이드(Transact-SQL)Upgrade a Database Using Detach and Attach (Transact-SQL)

이 항목에서는 분리 및 연결 작업을 사용하여 SQL Server 2017SQL Server 2017에서 데이터베이스를 업그레이드하는 방법에 대해 설명합니다.This topic describes how to use detach and attach operations to upgrade a database in SQL Server 2017SQL Server 2017. SQL Server 2017SQL Server 2017에 연결하면 데이터베이스를 바로 사용할 수 있으며 자동으로 업그레이드됩니다.After being attached to SQL Server 2017SQL Server 2017, the database is available immediately and is automatically upgraded.

항목 내용In This Topic

시작하기 전에 Before You Begin

제한 사항 Limitations and Restrictions

  • 시스템 데이터베이스는 연결할 수 없습니다.The system databases cannot be attached.

  • 연결 및 분리는 데이터베이스 간 소유권 체인 옵션을 0으로 설정하여 데이터베이스에 대한 데이터베이스 간 소유권 체인을 해제합니다.Attach and detach disable cross-database ownership chaining for the database by setting its cross db ownership chaining option to 0. 체인 설정 방법은 cross db ownership chaining 서버 구성 옵션을 참조하세요.For information about enabling chaining, see cross db ownership chaining Server Configuration Option.

  • 분리되지 않고 복사된 복제 데이터베이스를 연결하는 경우에는 다음을 수행해야 합니다.When attaching a replicated database that was copied instead of detached:

    • 동일한 서버 인스턴스의 업그레이드된 버전에 데이터베이스를 연결하는 경우 연결 작업이 완료된 후 sp_vupgrade_replication을 실행하여 복제를 업그레이드해야 합니다.If you attach the database to an upgraded version of the same server instance, you must execute sp_vupgrade_replication to upgrade replication after the attach operation finishes. 자세한 내용은 sp_vupgrade_replication(Transact-SQL)을 참조하세요.For more information, see sp_vupgrade_replication (Transact-SQL).

    • 버전에 관계없이 다른 서버 인스턴스에 데이터베이스를 연결하는 경우 연결 작업이 완료된 후 sp_removedbreplication을 실행하여 복제를 제거해야 합니다.If you attach the database to a different server instance (regardless of version), you must execute sp_removedbreplication to remove replication after the attach operation finishes. 자세한 내용은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information, see sp_removedbreplication (Transact-SQL).

권장 사항 Recommendations

알 수 없거나 신뢰할 수 없는 출처의 데이터베이스는 연결 또는 복원하지 않는 것이 좋습니다.We recommend that you do not attach or restore databases from unknown or untrusted sources. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQLTransact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB 를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database.

분리 및 연결을 사용하여 데이터베이스를 업그레이드하려면 To Upgrade a Database by Using Detach and Attach

  1. 데이터베이스를 분리합니다.Detach the database. 자세한 내용은 데이터베이스 분리를 참조하세요.For more information, see Detach a Database.

  2. 필요에 따라 분리된 데이터베이스 파일 및 로그 파일을 이동합니다.Optionally, move the detached database file or files and the log file or files.

    새 로그 파일을 만들려는 경우에도 데이터 파일뿐만 아니라 로그 파일도 이동해야 합니다.You should move the log files along with the data files, even if you intend to create new log files. 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다.In some cases, reattaching a database requires its existing log files. 따라서 데이터베이스가 분리된 로그 파일 없이도 성공적으로 연결될 때까지 모든 분리된 로그 파일을 항상 보존하세요.Therefore, always keep all the detached log files until the database has been successfully attached without them.

    참고

    로그 파일을 지정하지 않고 데이터베이스를 연결할 경우 연결 작업은 원래 위치에서 로그 파일을 검색합니다.If you try to attach the database without specifying the log file, the attach operation will look for the log file in its original location. 로그 파일의 원본이 여전히 원래 위치에 존재하는 경우 해당 복사본이 연결됩니다.If the original copy of the log still exists in that location, that copy is attached. 원래 로그 파일을 사용하지 않으려면 새 로그 파일의 경로를 지정하거나 로그 파일의 원본을 새 위치로 복사한 후 제거합니다.To avoid using the original log file, either specify the path of the new log file or remove the original copy of the log file (after copying it to the new location).

  3. 복사한 파일을 SQL Server 2017SQL Server 2017인스턴스에 연결합니다.Attach the copied files to the instance of SQL Server 2017SQL Server 2017. 자세한 내용은 Attach a Database을 참조하세요.For more information, see Attach a Database.

예제Example

다음 예에서는 이전 버전의 SQL Server에서 데이터 복사본을 업그레이드합니다.The following example upgrades a copy of a database from an earlier version of SQL Server. Transact-SQLTransact-SQL 문은 연결한 서버 인스턴스에 연결된 쿼리 편집기 창에서 실행됩니다.The Transact-SQLTransact-SQL statements are executed in a Query Editor window that is connected to the server instance to which is attached.

  1. 다음 Transact-SQLTransact-SQL 문을 실행하여 데이터베이스를 분리합니다.Detach the database by executing the following Transact-SQLTransact-SQL statements:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. 선택한 방법을 사용하여 데이터 및 로그 파일을 새 위치로 복사합니다.Using the method of your choice, copy the data and log files to the new location.

    중요

    프로덕션 데이터베이스의 경우 데이터베이스와 트랜잭션 로그를 별도의 디스크에 저장합니다.For a production database, place the database and transaction log on separate disks.

    네트워크를 통해 원격 컴퓨터의 디스크로 파일을 복사하려면 원격 위치의 UNC(Universal Naming Convention) 이름을 사용합니다.To copy files over the network to a disk on a remote computer, use the universal naming convention (UNC) name of the remote location. UNC 이름의 형식은 \\Servername\Sharename\Path\Filename입니다.A UNC name takes the form \\Servername\Sharename\Path\Filename. 로컬 하드 디스크에 파일을 쓸 경우 원격 디스크의 파일을 읽거나 파일에 쓰는 데 필요한 해당 권한은 SQL ServerSQL Server인스턴스에서 사용하는 사용자 계정에게 부여되어야 합니다.As with writing files to the local hard disk, the appropriate permissions that are required to read or write to a file on the remote disk must be granted to the user account used by the instance of SQL ServerSQL Server.

  3. 다음 Transact-SQLTransact-SQL 문을 실행하여 이동된 데이터베이스와 필요에 따라 해당 로그를 연결합니다.Attach the moved database and, optionally, its log by executing the following Transact-SQLTransact-SQL statement:

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

    SQL Server Management StudioSQL Server Management Studio에서 새로 연결되는 데이터베이스는 개체 탐색기에 즉시 표시되지 않습니다.In SQL Server Management StudioSQL Server Management Studio, a newly attached database is not immediately visible in Object Explorer. 데이터베이스를 보려면 개체 탐색기에서 보기 , 새로 고침을 차례로 클릭합니다.To view the database, in Object Explorer, click View, and then Refresh. 개체 탐색기에서 데이터베이스 노드가 확장될 때 새로 연결된 데이터베이스가 데이터베이스 목록에 나타납니다.When the Databases node is expanded in Object Explorer, the newly attached database now appears in the list of databases.

후속 작업: SQL Server 데이터베이스를 업그레이드한 후 Follow Up: After Upgrading a SQL Server Database

데이터베이스에 전체 텍스트 인덱스가 있는 경우 업그레이드 프로세스는 upgrade_option 서버 속성의 설정에 따라 인덱스를 가져오거나, 다시 설정하거나, 다시 작성합니다.If the database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the upgrade_option server property. 업그레이드 옵션이 가져오기(upgrade_option = 2) 또는 다시 작성(upgrade_option = 0)으로 설정되어 있는 경우 업그레이드하는 동안 전체 텍스트 인덱스를 사용할 수 없습니다.If the upgrade option is set to import (upgrade_option = 2) or rebuild (upgrade_option = 0), the full-text indexes will be unavailable during the upgrade. 인덱싱되는 데이터 양에 따라 가져오기 작업은 몇 시간씩 걸릴 수 있으며 다시 작성 작업은 10배 정도 더 걸릴 수 있습니다.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. 업그레이드 옵션이 가져오기로 설정되어 있으면 전체 텍스트 카탈로그를 사용할 수 없는 경우 관련된 전체 텍스트 인덱스가 다시 작성됩니다.Note also that when the upgrade option is set to import, the associated full-text indexes are rebuilt if a full-text catalog is not available. upgrade_option 서버 속성의 설정을 변경하려면 sp_fulltext_service를 사용합니다.To change the setting of the upgrade_option server property, use sp_fulltext_service.

업그레이드 후 데이터베이스 호환성 수준Database Compatibility Level After Upgrade

사용자 데이터베이스의 호환성 수준이 업그레이드 이전에 100 이상이면 업그레이드 후에도 동일하게 유지됩니다.If the compatibility level of a user database is 100 or higher before upgrade, it remains the same after upgrade. 업그레이드 이전에 호환성 수준이 90이면 업그레이드된 데이터베이스에서는 호환성 수준이 SQL Server 2017SQL Server 2017에서 지원되는 가장 낮은 호환성 수준인 100으로 설정됩니다.If the compatibility level is 90 before upgrade in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2017SQL Server 2017. 자세한 내용은 ALTER DATABASE 호환성 수준(Transact-SQL)을 참조하세요.For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

업그레이드한 서버 인스턴스의 메타데이터 관리Managing Metadata on the Upgraded Server Instance

데이터베이스를 다른 서버 인스턴스에 연결하는 경우 사용자와 응용 프로그램에 일관된 환경을 제공하려면 로그인, 작업, 권한 등 데이터베이스의 일부 또는 모든 메타데이터를 다른 서버 인스턴스에서 다시 만들어야 할 수도 있습니다.When you attach a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all of the metadata for the database, such as logins, jobs, and permissions, on the other server instance. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요.For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server).

3DES에서 AES로의 서비스 마스터 키 및 데이터베이스 마스터 키 암호화 변경Service Master Key and Database Master Key Encryption changes from 3DES to AES

SQL Server 2012SQL Server 2012 이상 버전에서는 AES 암호화 알고리즘을 사용하여 SMK(서비스 마스터 키) 및 DMK(데이터베이스 마스터 키)를 보호합니다. and higher versions uses the AES encryption algorithm to protect the service master key (SMK) and the database master key (DMK). AES는 이전 버전에서 사용하는 3DES보다 최신 암호화 알고리즘입니다.AES is a newer encryption algorithm than 3DES used in earlier versions. 데이터베이스가 새 SQL ServerSQL Server인스턴스로 처음으로 연결되거나 복원될 때 데이터베이스 마스터 키(서비스 마스터 키로 암호화됨)의 복사본은 서버에 아직 저장되지 않은 상태입니다.When a database is first attached or restored to a new instance of SQL ServerSQL Server, a copy of the database master key (encrypted by the service master key) is not yet stored in the server. 데이터베이스 마스터 키를 암호 해독하려면 OPEN MASTER KEY 문을 사용해야 합니다.You must use the OPEN MASTER KEY statement to decrypt the database master key (DMK). DMK를 암호 해독한 후에는 ALTER MASTER KEY REGENERATE 문을 사용하여 SMK(서비스 마스터 키)로 암호화된 DMK의 복사본을 서버에 프로비전함으로써 앞으로 자동 암호 해독을 사용하도록 설정할 수 있습니다.Once the DMK has been decrypted, you have the option of enabling automatic decryption in the future by using the ALTER MASTER KEY REGENERATE statement to provision the server with a copy of the DMK, encrypted with the service master key (SMK). 데이터베이스가 이전 버전에서 업그레이드되지 않은 경우에는 DMK를 다시 생성해야 최신 AES 알고리즘을 사용할 수 있습니다.When a database has been upgraded from an earlier version, the DMK should be regenerated to use the newer AES algorithm. DMK를 다시 생성하는 방법은 ALTER MASTER KEY(Transact-SQL)를 참조하세요.For more information about regenerating the DMK, see ALTER MASTER KEY (Transact-SQL). AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 데 소요되는 시간은 DMK에서 보호하는 개체 수에 따라 달라집니다.The time required to regenerate the DMK key to upgrade to AES depends upon the number of objects protected by the DMK. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 작업은 한 번만 필요하며 키 회전 전략의 일부로 이후에 수행하는 다시 생성 작업에 영향을 주지 않습니다.Regenerating the DMK key to upgrade to AES is only necessary once, and has no impact on future regenerations as part of a key rotation strategy.