데이터베이스 분리 및 연결(SQL Server)Database Detach and Attach (SQL Server)

데이터베이스의 데이터 및 트랜잭션 로그 파일은 분리할 수 있으며 동일한 SQL ServerSQL Server인스턴스나 다른 인스턴스에 다시 연결할 수 있습니다.The data and transaction log files of a database can be detached and then reattached to the same or another instance of SQL ServerSQL Server. 데이터베이스 분리 및 연결은 데이터베이스를 같은 컴퓨터의 다른 SQL ServerSQL Server 인스턴스로 변경하거나 데이터베이스를 이동하는 경우 유용합니다.Detaching and attaching a database is useful if you want to change the database to a different instance of SQL ServerSQL Server on the same computer or to move the database.

보안 Security

파일 액세스 권한은 데이터베이스 분리, 연결 등의 여러 데이터베이스 작업 중에 설정됩니다.File access permissions are set during a number of database operations, including detaching or attaching a database.

중요

알 수 없거나 신뢰할 수 없는 출처의 데이터베이스는 연결 또는 복원하지 않는 것이 좋습니다.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.

데이터베이스 분리 Detaching a Database

데이터베이스를 분리하면 SQL ServerSQL Server 인스턴스에서 해당 데이터베이스가 제거되지만 데이터베이스의 데이터 파일 및 트랜잭션 로그 파일은 그대로 유지됩니다.Detaching a database removes it from the instance of SQL ServerSQL Server but leaves the database intact within its data files and transaction log files. 이 파일은 데이터베이스가 분리된 해당 서버뿐 아니라 SQL ServerSQL Server인스턴스가 실행되는 모든 컴퓨터에 데이터베이스를 연결하는 데 사용할 수 있습니다.These files can then be used to attach the database to any instance of SQL ServerSQL Server, including the server from which the database was detached.

다음 중 하나라도 해당하는 경우 데이터베이스를 분리할 수 없습니다.You cannot detach a database if any of the following are true:

  • 데이터베이스를 복제하여 게시한 경우.The database is replicated and published. 데이터베이스가 복제된 경우 해당 데이터베이스의 게시를 해제해야 합니다.If replicated, the database must be unpublished. 따라서 데이터베이스를 분리하려면 먼저 sp_replicationdboption을 실행하여 게시를 해제해야 합니다.Before you can detach it, you must disable publishing by running sp_replicationdboption.

    참고

    sp_replicationdboption을 사용할 수 없는 경우 sp_removedbreplication을 실행하여 복제를 제거할 수 있습니다.If you cannot use sp_replicationdboption, you can remove replication by running sp_removedbreplication.

  • 데이터베이스에 데이터베이스 스냅숏이 있는 경우A database snapshot exists on the database.

    데이터베이스를 분리하려면 먼저 해당 데이터베이스의 모든 스냅숏을 삭제해야 합니다.Before you can detach the database, you must drop all of its snapshots. 자세한 내용은 데이터베이스 스냅숏 삭제(Transact-SQL)인스턴스나 다른 인스턴스에 다시 연결할 수 있습니다.For more information, see Drop a Database Snapshot (Transact-SQL).

    참고

    데이터베이스 스냅숏은 분리하거나 연결할 수 없습니다.A database snapshot cannot be detached or attached.

  • 데이터베이스가 데이터베이스 미러링 세션에서 미러되고 있는 경우.The database is being mirrored in a database mirroring session.

    데이터베이스는 세션이 종료된 후에야 분리될 수 있습니다.The database cannot be detached unless the session is terminated. 자세한 내용은 데이터베이스 미러링 제거(SQL Server)를 참조하세요.For more information, see Removing Database Mirroring (SQL Server).

  • 주의 대상 데이터베이스인 경우The database is suspect. 주의 대상 데이터베이스는 분리할 수 없습니다. 분리하려면 먼저 데이터베이스를 응급 모드로 설정해야 합니다.A suspect database cannot be detached; before you can detach it, you must put it into emergency mode. 데이터베이스를 응급 모드로 설정하는 방법은 ALTER DATABASE(Transact-SQL)를 참조하세요.For more information about how to put a database into emergency mode, see ALTER DATABASE (Transact-SQL).

  • 데이터베이스가 시스템 데이터베이스인 경우The database is a system database.

백업, 복원 및 분리Backup and Restore and Detach

읽기 전용 데이터베이스를 분리하면 차등 백업의 차등 기반에 대한 정보가 손실됩니다.Detaching a read-only database loses information about the differential bases of differential backups. 자세한 내용은 차등 백업(SQL Server)을 참조하세요.For more information, see Differential Backups (SQL Server).

분리 오류에 대한 대처 방법Responding to Detach Errors

데이터베이스를 분리하는 동안 발생한 오류로 인해 데이터를 완전히 닫지 못하고 트랜잭션 로그를 다시 작성하지 못할 수 있습니다.Errors produced while detaching a database can prevent the database from closing cleanly and the transaction log from being rebuilt. 오류 메시지가 표시되면 다음의 수정 동작을 수행하세요.If you receive an error message, perform the following corrective actions:

  1. 주 파일뿐 아니라 데이터베이스와 관련된 모든 파일을 다시 연결합니다.Reattach all files associated with the database, not just the primary file.

  2. 오류 메시지를 발생시킨 문제를 해결합니다.Resolve the problem that caused the error message.

  3. 데이터베이스를 다시 분리합니다.Detach the database again.

데이터베이스 연결 Attaching a Database

복사 또는 분리한 SQL ServerSQL Server 데이터베이스를 연결할 수 있습니다.You can attach a copied or detached SQL ServerSQL Server database. SQL Server 2005SQL Server 2005 서버 인스턴스에 전체 텍스트 카탈로그 파일이 포함된 SQL Server 2017SQL Server 2017 데이터베이스를 연결할 경우 SQL Server 2005SQL Server 2005에서와 같이 다른 데이터베이스 파일과 함께 이전 위치에서 카탈로그 파일이 연결됩니다.When you attach a SQL Server 2005SQL Server 2005 database that contains full-text catalog files onto a SQL Server 2017SQL Server 2017 server instance, the catalog files are attached from their previous location along with the other database files, the same as in SQL Server 2005SQL Server 2005. 자세한 내용은 전체 텍스트 검색 업그레이드를 참조하세요.For more information, see Upgrade Full-Text Search.

데이터베이스를 연결할 경우 모든 데이터 파일(MDF 및 NDF 파일)이 사용 가능해야 합니다.When you attach a database, all data files (MDF and NDF files) must be available. 데이터베이스가 처음 생성되었을 때 또는 마지막으로 연결되었을 때와 경로가 다른 데이터 파일이 있으면 해당 파일의 현재 경로를 지정해야 합니다.If any data file has a different path from when the database was first created or last attached, you must specify the current path of the file.

참고

연결되는 주 데이터 파일이 읽기 전용일 경우 데이터베이스 엔진Database Engine 은 해당 데이터베이스를 읽기 전용으로 가정합니다.If the primary data file being attached is read-only, the 데이터베이스 엔진Database Engine assumes that the database is read-only.

암호화된 데이터베이스가 SQL ServerSQL Server인스턴스에 처음 연결된 경우 데이터베이스 소유자는 OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'문을 실행하여 데이터베이스의 마스터 키를 열어야 합니다.When an encrypted database is first attached to an instance of SQL ServerSQL Server, the database owner must open the master key of the database by executing the following statement: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. 그런 다음 ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY 문을 실행하여 데이터베이스 마스터 키의 자동 암호 해독을 설정하는 것이 좋습니다.We recommend that you enable automatic decryption of the master key by executing the following statement: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. 자세한 내용은 CREATE MASTER KEY(Transact-SQL)ALTER MASTER KEY(Transact-SQL)를 참조하세요.For more information, see CREATE MASTER KEY (Transact-SQL) and ALTER MASTER KEY (Transact-SQL).

로그 파일 연결 요구 사항은 데이터베이스가 읽기/쓰기인지 아니면 읽기 전용인지에 따라 다음과 같이 달라집니다.The requirement for attaching log files depends partly on whether the database is read-write or read-only, as follows:

  • 읽기 전용 데이터베이스에서는 보통 새 위치에 로그 파일을 연결할 수 있습니다.For a read-write database, you can usually attach a log file in a new location. 그러나 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다.However, in some cases, reattaching a database requires its existing log files. 따라서 데이터베이스가 분리된 로그 파일 없이도 성공적으로 연결될 때까지 모든 분리된 로그 파일을 항상 보존하는 것이 중요합니다.Therefore, it is important to always keep all the detached log files until the database has been successfully attached without them.

    읽기/쓰기 데이터베이스에 로그 파일이 하나고 이 로그 파일에 새 위치를 지정하지 않은 경우 연결 작업에서 해당 파일의 이전 위치를 검색합니다.If a read-write database has a single log file and you do not specify a new location for the log file, the attach operation looks in the old location for the file. 로그 파일을 발견하면 데이터베이스가 완전히 종료되었는지 여부에 관계없이 이전 로그 파일을 사용합니다.If it is found, the old log file is used, regardless of whether the database was shut down cleanly. 하지만 이전 로그 파일을 찾지 못하고 데이터베이스가 완전히 종료되었으며 활성 로그 체인이 없는 경우 연결 작업에서 해당 데이터베이스의 로그 파일을 새로 작성합니다.However, if the old log file is not found and if the database was shut down cleanly and has no active log chain, the attach operation attempts to build a new log file for the database.

  • 연결되는 주 데이터 파일이 읽기 전용일 경우 데이터베이스 엔진Database Engine 은 해당 데이터베이스를 읽기 전용으로 가정합니다.If the primary data file being attached is read-only, the 데이터베이스 엔진Database Engine assumes that the database is read-only. 읽기 전용 데이터베이스에서 로그 파일 또는 파일은 데이터베이스의 주 파일에 지정된 위치에 있어야 합니다.For a read-only database, the log file or files must be available at the location specified in the primary file of the database. SQL ServerSQL Server 가 주 파일에 저장된 로그 위치를 업데이트할 수 없으므로 새 로그 파일을 작성할 수 없기 때문입니다.A new log file cannot be built because SQL ServerSQL Server cannot update the log location stored in the primary file.

데이터베이스 연결 시 메타데이터 변경 Metadata Changes on Attaching a Database

읽기 전용 데이터베이스를 분리한 다음 다시 연결하는 경우 현재 차등 기반에 대한 백업 정보는 손실됩니다.When a read-only database is detached and then reattached, the backup information about the current differential base is lost. 차등 기반 은 데이터베이스나 데이터베이스에 있는 파일 또는 파일 그룹의 하위 집합에 있는 모든 데이터에 대한 최신 전체 백업입니다.The differential base is the most recent full backup of all the data in the database or in a subset of the files or filegroups of the database. 기반 백업 정보가 없는 경우 master 데이터베이스는 읽기 전용 데이터베이스와 동기화되지 않으므로 이후에 수행되는 차등 백업에서 예기치 않은 결과가 발생할 수 있습니다.Without the base-backup information, the master database becomes unsynchronized with the read-only database, so differential backups taken thereafter may provide unexpected results. 그러므로 읽기 전용 데이터베이스를 차등 백업하는 경우에는 데이터베이스를 다시 연결한 다음 전체 백업을 수행하여 새로운 차등 기반을 만들어야 합니다.Therefore, if you are using differential backups with a read-only database, you should establish a new differential base by taking a full backup after you reattach the database. 차등 백업에 대한 자세한 내용은 차등 백업(SQL Server)을 참조하세요.For information about differential backups, see Differential Backups (SQL Server).

연결 시 데이터베이스가 시작됩니다.On attach, database startup occurs. 일반적으로 데이터베이스를 연결하면 데이터베이스를 분리 또는 복사한 시점과 동일한 상태가 됩니다.Generally, attaching a database places it in the same state that it was in when it was detached or copied. 그러나 연결 및 분리 작업을 수행하면 해당 데이터베이스의 데이터베이스 간 소유권 체인을 사용할 수 없게 됩니다.However, attach-and-detach operations both disable cross-database ownership chaining for the database. 체인을 사용하도록 설정하는 방법은 cross db ownership chaining 서버 구성 옵션을 참조하세요.For information about how to enable chaining, see cross db ownership chaining Server Configuration Option. 또한 데이터베이스를 연결할 때마다 TRUSTWORTHY는 OFF로 설정됩니다.Also, TRUSTWORTHY is set to OFF whenever the database is attached. TRUSTWORTHY를 ON으로 설정하는 방법은 ALTER DATABASE(Transact-SQL)를 참조하세요.For information about how to set TRUSTWORTHY to ON, see ALTER DATABASE (Transact-SQL).

백업, 복원 및 연결Backup and Restore and Attach

완전히 또는 부분적으로 오프라인 상태인 데이터베이스와 마찬가지로 파일을 복원 중인 데이터베이스에는 연결될 수 없습니다.Like any database that is fully or partially offline, a database with restoring files cannot be attached. 이때 복원 시퀀스를 중지하면 데이터베이스를 연결할 수 있습니다.If you stop the restore sequence, you can attach the database. 그런 다음 복원 시퀀스를 다시 시작할 수 있습니다.Then, you can restart the restore sequence.

다른 서버 인스턴스에 데이터베이스 연결 Attaching a Database to Another Server Instance

중요

최신 버전의 SQL ServerSQL Server 에서 만든 데이터베이스를 이전 버전에서 연결할 수 없습니다.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions.

데이터베이스를 다른 서버 인스턴스에 연결하는 경우 사용자와 응용 프로그램에 일관된 환경을 제공하려면 로그인, 작업 등 데이터베이스의 일부 또는 모든 메타데이터를 다른 서버 인스턴스에서 다시 만들어야 할 수도 있습니다.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 and jobs, on the other server instance. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리(SQL Server)를 참조하세요.For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server).

데이터베이스를 분리하려면To detach a database

참고 항목See Also

데이터베이스 파일 및 파일 그룹Database Files and Filegroups