데이터베이스 분리 및 연결(SQL Server)
적용 대상: SQL Server
데이터베이스의 데이터 및 트랜잭션 로그 파일을 분리한 다음 SQL Server의 동일한 인스턴스 또는 다른 인스턴스에 다시 연결할 수 있습니다. 데이터베이스 분리 및 연결은 데이터베이스를 동일한 컴퓨터의 다른 SQL Server 인스턴스로 변경하거나 데이터베이스를 이동하려는 경우에 유용합니다.
사용 권한
파일 액세스 권한은 데이터베이스 분리, 연결 등 여러 데이터베이스 작업 중에 설정됩니다.
Important
출처를 알 수 없거나 신뢰할 수 없는 데이터베이스는 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB(Transact-SQL)를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.
데이터베이스 분리
데이터베이스를 분리하면 SQL Server 인스턴스에서 해당 데이터베이스가 제거되지만 데이터베이스의 데이터 파일 및 트랜잭션 로그 파일은 그대로 유지됩니다. 그런 다음 이러한 파일을 사용하여 데이터베이스를 분리한 서버를 포함해 SQL Server의 모든 인스턴스에 데이터베이스를 연결할 수 있습니다.
다음 중 하나라도 해당하는 경우 데이터베이스를 분리할 수 없습니다.
데이터베이스는 복제되고 게시됩니다. 데이터베이스가 복제된 경우 해당 데이터베이스의 게시를 해제해야 합니다. 분리하려면 먼저 sp_replicationdboption를 실행하여 게시를 사용하지 않도록 설정해야 합니다.
참고 항목
sp_replicationdboption
을 사용할 수 없는 경우 sp_removedbreplication을 실행하여 복제를 제거할 수 있습니다.데이터베이스에 데이터베이스 스냅샷이 있습니다.
데이터베이스를 분리하려면 먼저 모든 스냅샷을 삭제해야 합니다. 자세한 정보는 Drop a Database Snapshot (Transact-SQL)을 참조하세요.
참고 항목
데이터베이스 스냅샷은 분리하거나 연결할 수 없습니다.
데이터베이스는 Always On 가용성 그룹의 일부입니다.
데이터베이스는 가용성 그룹에서 제거될 때까지 분리할 수 없습니다. 자세한 내용은 Always On 가용성 그룹에서 주 데이터베이스 제거를 참조하세요.
데이터베이스가 데이터베이스 미러링 세션에서 미러링되고 있습니다.
세션이 종료되지 않는 한 데이터베이스를 분리할 수 없습니다. 자세한 내용은 데이터베이스 미러링 제거(SQL Server)를 참조하세요.
데이터베이스가 의심스럽다. 주의 대상 데이터베이스는 분리할 수 없습니다. 분리하려면 먼저 비상 모드로 전환해야 합니다. 데이터베이스를 긴급 모드로 전환하는 방법에 대한 자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하세요.
데이터베이스는 시스템 데이터베이스입니다.
백업, 복원 및 분리
읽기 전용 데이터베이스를 분리하면 차등 백업의 차등 기반에 대한 정보가 손실됩니다. 자세한 내용은 차등 백업(SQL Server)을 참조하세요.
분리 오류에 대한 대응
데이터베이스를 분리하는 동안 발생한 오류로 인해 데이터를 완전히 닫지 못하고 트랜잭션 로그를 다시 작성하지 못할 수 있습니다. 오류 메시지가 표시되면 다음 수정 작업을 수행합니다.
주 파일뿐 아니라 데이터베이스와 관련된 모든 파일을 다시 연결합니다.
오류 메시지를 발생시킨 문제를 해결합니다.
데이터베이스를 다시 분리합니다.
데이터베이스 연결
복사되거나 분리된 SQL Server 데이터베이스를 연결할 수 있습니다. SQL Server 서버 인스턴스에 전체 텍스트 카탈로그 파일이 포함된 SQL Server 2005(9.x) 데이터베이스를 연결할 경우 SQL Server 2005(9.x)에서와 같이 다른 데이터베이스 파일과 함께 이전 위치에서 카탈로그 파일이 연결됩니다. 자세한 내용은 전체 텍스트 검색 업그레이드를 참조하세요.
데이터베이스를 연결할 때에는 모든 데이터 파일(.mdf
과 .ndf
파일)이 사용 가능해야 합니다. 데이터베이스를 처음 만들거나 마지막으로 연결했을 때와 다른 경로가 있는 데이터 파일의 경우 파일의 현재 경로를 지정해야 합니다.
참고 항목
첨부되는 기본 데이터 파일이 읽기 전용인 경우 데이터베이스 엔진 데이터베이스가 읽기 전용이라고 가정합니다.
암호화된 데이터베이스가 SQL Server의 인스턴스에 처음 연결된 경우 데이터베이스 소유자는 OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'
문을 실행하여 데이터베이스 마스터 키(DMK)를 열어야 합니다. ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
문을 실행하여 DMK의 자동 암호 해독을 사용하기를 권장합니다. 자세한 정보는 CREATE MASTER KEY(Transact-SQL)과 ALTER MASTER KEY(Transact-SQL)를 참조하세요.
로그 파일을 연결하기 위한 요구 사항은 다음과 같이 데이터베이스가 읽기/쓰기 또는 읽기 전용인지에 따라 부분적으로 달라집니다.
읽기 전용 데이터베이스에서는 보통 새 위치에 로그 파일을 연결할 수 있습니다. 그러나 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다. 따라서 데이터베이스가 분리된 로그 파일 없이도 성공적으로 연결될 때까지 모든 분리된 로그 파일을 항상 보존하는 것이 중요합니다.
읽기/쓰기 데이터베이스에 단일 로그 파일이 있고 로그 파일의 새 위치를 지정하지 않는 경우 연결 작업은 파일의 이전 위치를 찾습니다. 이전 로그 파일이 발견되면 데이터베이스가 완전히 종료되었는지 여부에 관계없이 사용됩니다. 그러나 이전 로그 파일을 찾을 수 없고 데이터베이스가 완전히 종료되고 활성 로그 체인이 없는 경우 연결 작업은 데이터베이스에 대한 새 로그 파일을 빌드하려고 시도합니다.
첨부되는 기본 데이터 파일이 읽기 전용인 경우 데이터베이스 엔진 데이터베이스가 읽기 전용이라고 가정합니다. 읽기 전용 데이터베이스에서 로그 파일 또는 파일은 데이터베이스의 주 파일에 지정된 위치에 있어야 합니다. SQL Server는 기본 파일에 저장된 로그 위치를 업데이트할 수 없으므로 새 로그 파일을 빌드할 수 없습니다.
데이터베이스 연결 시 메타데이터 변경
읽기 전용 데이터베이스를 분리한 다음 다시 연결하면 현재 차등 기반에 대한 백업 정보가 손실됩니다. 차등 기반은 데이터베이스나 데이터베이스에 있는 파일 또는 파일 그룹의 하위 집합에 있는 모든 데이터에 대한 최신 전체 백업입니다. 기본 백업 정보가 없으면 master
데이터베이스가 읽기 전용 데이터베이스와 동기화되지 않으므로 이후에 수행된 차등 백업은 예기치 않은 결과를 제공할 수 있습니다. 따라서 읽기 전용 데이터베이스에서 차등 백업을 사용하는 경우 데이터베이스를 다시 연결한 후 전체 백업을 사용하여 새 차등 기반을 설정해야 합니다. 차등 백업에 대한 자세한 내용은 차등 백업(SQL Server)을 참조하세요.
연결 시 데이터베이스 시작이 발생합니다. 일반적으로 데이터베이스를 연결하면 데이터베이스를 분리 또는 복사한 시점과 동일한 상태가 됩니다. 그러나 연결 및 분리 작업을 수행하면 해당 데이터베이스의 데이터베이스 간 소유권 체인을 사용할 수 없게 됩니다. 체인 사용 설정 방법에 대한 자세한 내용은 데이터베이스 간 소유권 체인 서버 구성 옵션을 참조하세요.
Important
기본값으로 보안을 위해 데이터베이스가 연결될 때마다 is_broker_enabled, is_honor_broker_priority_on, is_trustworthy_on 옵션이 OFF로 설정됩니다. 이러한 옵션을 ON으로 설정하는 방법에 ALTER DATABASE(Transact-SQL)를 참조하세요. 메타데이터에 대한 자세한 정보는 다른 서버에서 데이터베이스를 사용할 수 있도록 설정할 때 메타데이터 관리를 참조하세요.
백업, 복원 및 연결
완전히 또는 부분적으로 오프라인 상태인 데이터베이스와 마찬가지로 파일을 복원 중인 데이터베이스에는 연결될 수 없습니다. 이때 복원 시퀀스를 중지하면 데이터베이스를 연결할 수 있습니다. 그런 다음 복원 시퀀스를 다시 시작할 수 있습니다.
다른 서버 인스턴스에 데이터베이스 연결
Important
최신 버전의 SQL Server에서 만든 데이터베이스를 이전 버전에서 연결할 수 없습니다. 데이터베이스가 데이터베이스 엔진의 이전 버전으로 실제로 사용되지 않도록 합니다. 그러나 이는 메타데이터 상태와 관련되어 있으며 데이터베이스 호환성 수준에 영향을 주지 않습니다. 자세한 내용은 ALTER DATABASE(Transact-SQL) 호환성 수준을 참조하세요.
사용자와 애플리케이션에 일관된 환경을 제공하기 위해 데이터베이스를 다른 서버 인스턴스에 연결할 때 다른 서버 인스턴스에서 데이터베이스의 메타데이터 일부 또는 전부를 다시 만들어야 할 수 있습니다. 이 메타데이터에는 로그인 및 작업과 같은 것이 포함됩니다. 자세한 내용은 다른 서버에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리를 참조하세요.
관련 작업
작업 | 아티클 |
---|---|
데이터베이스 분리 | - sp_detach_db (Transact-SQL) - 데이터베이스 분리 |
데이터베이스 연결 | - CREATE DATABASE - 데이터베이스 연결 - sp_attach_db (Transact-SQL) - sp_attach_single_file_db(Transact-SQL) |
분리 및 연결 작업을 사용하여 데이터베이스를 업그레이드하려면 | - 분리 및 연결을 사용하여 데이터베이스 업그레이드(Transact-SQL) |
분리 및 연결 작업을 사용하여 데이터베이스 이동 | - 분리 및 연결을 사용하여 데이터베이스 이동(Transact-SQL) |
데이터베이스 스냅샷 삭제 | - 데이터베이스 스냅샷 삭제(Transact-SQL) |