데이터베이스 분리 및 연결
데이터베이스의 데이터 및 트랜잭션 로그 파일은 분리할 수 있으며 동일한 SQL Server 인스턴스나 다른 인스턴스에 다시 연결할 수 있습니다. 데이터베이스 분리 및 연결은 데이터베이스를 같은 컴퓨터의 다른 SQL Server 인스턴스로 변경하거나 데이터베이스를 이동하는 경우 유용합니다.
[!참고]
SQL Server 디스크상 저장소 형식은 64비트 및 32비트 환경에서 동일합니다. 따라서 32비트 및 64비트 환경에서 연결 작업을 수행할 수 있습니다. 한 환경에서 실행 중인 서버 인스턴스에서 분리된 데이터베이스를 다른 환경에서 실행하는 서버 인스턴스에 연결할 수 있습니다.
보안
파일 액세스 권한은 데이터베이스 연결 또는 분리를 비롯한 여러 데이터베이스 작업 중에 설정됩니다. 데이터베이스를 분리 및 연결할 때마다 설정되는 파일 사용 권한에 대한 자세한 내용은 데이터 및 로그 파일 보안을 참조하십시오.
보안 정보 |
---|
출처를 알 수 없거나 신뢰할 수 없는 데이터베이스는 연결하거나 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 출처의 데이터베이스를 사용하기 전에 프로덕션 서버가 아닌 서버에서 해당 데이터베이스에 대해 DBCC CHECKDB를 실행하고 저장 프로시저 또는 다른 사용자 정의 코드 같은 데이터베이스의 코드도 검사하십시오. |
데이터베이스 분리
데이터베이스를 분리하면 SQL Server 인스턴스에서 해당 데이터베이스가 제거되지만 데이터베이스의 데이터 파일 및 트랜잭션 로그 파일은 그대로 유지됩니다. 이 파일은 데이터베이스가 분리된 해당 서버뿐 아니라 SQL Server 인스턴스가 실행되는 모든 컴퓨터에 데이터베이스를 연결하는 데 사용할 수 있습니다.
다음 중 하나라도 해당하는 경우 데이터베이스를 분리할 수 없습니다.
데이터베이스를 복제하여 게시한 경우. 데이터베이스가 복제된 경우 해당 데이터베이스의 게시를 해제해야 합니다. 따라서 데이터베이스를 분리하려면 먼저 sp_replicationdboption을 실행하여 게시를 해제해야 합니다.
[!참고]
sp_replicationdboption을 사용할 수 없는 경우 sp_removedbreplication을 실행하여 복제를 제거할 수 있습니다.
데이터베이스에 데이터베이스 스냅숏이 있는 경우.
데이터베이스를 분리하려면 먼저 해당 데이터베이스의 모든 스냅숏을 삭제해야 합니다. 자세한 내용은 방법: 데이터베이스 스냅숏 삭제(Transact-SQL)를 참조하십시오.
[!참고]
데이터베이스 스냅숏은 분리하거나 연결할 수 없습니다.
데이터베이스가 데이터베이스 미러링 세션에서 미러되고 있는 경우.
데이터베이스는 세션이 종료된 후에야 분리될 수 있습니다. 자세한 내용은 데이터베이스 미러링 제거를 참조하십시오.
주의 대상 데이터베이스인 경우. SQL Server 2005 이상 버전에서 주의 대상 데이터베이스는 분리할 수 없습니다. 분리하려면 먼저 데이터베이스를 응급 모드로 설정해야 합니다. 데이터베이스를 응급 모드로 설정하는 방법은 ALTER DATABASE(Transact-SQL)를 참조하십시오.
데이터베이스가 시스템 데이터베이스인 경우
데이터베이스 분리
백업, 복원 및 분리
읽기 전용 데이터베이스를 분리하면 차등 백업의 차등 기반에 대한 정보가 손실됩니다. 자세한 내용은 읽기 전용 데이터베이스 백업을 참조하십시오.
분리 오류에 대한 대처 방법
데이터베이스를 분리하는 동안 발생한 오류로 인해 데이터를 완전히 닫지 못하고 트랜잭션 로그를 다시 작성하지 못할 수 있습니다. 오류 메시지가 표시되면 다음의 수정 동작을 수행하십시오.
주 파일뿐 아니라 데이터베이스와 관련된 모든 파일을 다시 연결합니다.
오류 메시지를 발생시킨 문제를 해결합니다.
데이터베이스를 다시 분리합니다.
데이터베이스 연결
복사 또는 분리한 SQL Server 데이터베이스를 연결할 수 있습니다. SQL Server 2008 서버 인스턴스에 전체 텍스트 카탈로그 파일이 포함된 SQL Server 2005 데이터베이스를 연결할 경우 SQL Server 2005에서와 같이 다른 데이터베이스 파일과 함께 이전 위치에서 카탈로그 파일이 연결됩니다. For more information, see 전체 텍스트 검색 업그레이드.
데이터베이스를 연결할 경우 모든 데이터 파일(MDF 및 NDF 파일)이 사용 가능해야 합니다. 데이터베이스가 처음 생성되었을 때 또는 마지막으로 연결되었을 때와 경로가 다른 데이터 파일이 있으면 해당 파일의 현재 경로를 지정해야 합니다.
[!참고]
연결되는 주 데이터 파일이 읽기 전용일 경우 데이터베이스 엔진은 해당 데이터베이스를 읽기 전용으로 가정합니다.
암호화된 데이터베이스가 SQL Server 인스턴스에 처음 연결된 경우 OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' 문을 실행하여 데이터베이스의 마스터 키를 열어야 합니다. 그런 다음 ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY 문을 실행하여 마스터 키의 자동 암호 해독을 설정하는 것이 좋습니다. 자세한 내용은 CREATE MASTER KEY(Transact-SQL) 및 ALTER MASTER KEY(Transact-SQL)를 참조하십시오.
로그 파일 연결 요구 사항은 데이터베이스가 읽기/쓰기인지 아니면 읽기 전용인지에 따라 다음과 같이 달라집니다.
읽기 전용 데이터베이스에서는 보통 새 위치에 로그 파일을 연결할 수 있습니다. 그러나 경우에 따라 데이터베이스를 다시 연결하려면 기존 로그 파일이 필요합니다. 따라서 데이터베이스가 분리된 로그 파일 없이도 성공적으로 연결될 때까지 모든 분리된 로그 파일을 항상 보존하는 것이 중요합니다.
읽기/쓰기 데이터베이스에 로그 파일이 하나고 이 로그 파일에 새 위치를 지정하지 않은 경우 연결 작업에서 해당 파일의 이전 위치를 검색합니다. 로그 파일을 발견하면 데이터베이스가 완전히 종료되었는지 여부에 관계없이 이전 로그 파일을 사용합니다. 하지만 이전 로그 파일을 찾지 못하고 데이터베이스가 완전히 종료되었으며 활성 로그 체인이 없는 경우 연결 작업에서 해당 데이터베이스의 로그 파일을 새로 작성합니다. 자세한 내용은 트랜잭션 로그 논리 아키텍처 및 트랜잭션 로그 물리 아키텍처를 참조하십시오.
연결되는 주 데이터 파일이 읽기 전용일 경우 데이터베이스 엔진은 해당 데이터베이스를 읽기 전용으로 가정합니다. 읽기 전용 데이터베이스에서 로그 파일 또는 파일은 데이터베이스의 주 파일에 지정된 위치에 있어야 합니다. SQL Server가 주 파일에 저장된 로그 위치를 업데이트할 수 없으므로 새 로그 파일을 작성할 수 없기 때문입니다.
데이터베이스 연결 시 메타데이터 변경 사항
읽기 전용 데이터베이스를 분리한 다음 다시 연결하는 경우 현재 차등 기반에 대한 백업 정보는 손실됩니다. 차등 기반은 데이터베이스나 데이터베이스에 있는 파일 또는 파일 그룹의 하위 집합에 있는 모든 데이터에 대한 최신 전체 백업입니다. 기반 백업 정보가 없는 경우 master 데이터베이스는 읽기 전용 데이터베이스와 동기화되지 않으므로 이후에 수행되는 차등 백업에서 예기치 않은 결과가 발생할 수 있습니다. 그러므로 읽기 전용 데이터베이스를 차등 백업하는 경우에는 데이터베이스를 다시 연결한 다음 전체 백업을 수행하여 새로운 차등 기반을 만들어야 합니다. 자세한 내용은 차등 백업의 기반을 참조하십시오.
연결 시 데이터베이스가 시작됩니다. 일반적으로 데이터베이스를 연결하면 데이터베이스를 분리 또는 복사한 시점과 동일한 상태가 됩니다. 그러나 SQL Server 2005 이상 버전에서 연결 및 분리 작업을 수행하면 해당 데이터베이스의 데이터베이스 간 소유권 체인을 사용할 수 없게 됩니다. 체인을 설정하는 방법은 cross db ownership chaining 옵션을 참조하십시오. 또한 데이터베이스를 연결할 때마다 TRUSTWORTHY는 OFF로 설정됩니다. TRUSTWORTHY를 ON으로 설정하는 방법은 ALTER DATABASE(Transact-SQL)를 참조하십시오.
백업, 복원 및 연결
완전히 또는 부분적으로 오프라인 상태인 데이터베이스와 마찬가지로 파일을 복원 중인 데이터베이스에는 연결될 수 없습니다. 이때 복원 시퀀스를 중지하면 데이터베이스를 연결할 수 있습니다. 그런 다음 복원 시퀀스를 다시 시작할 수 있습니다.
다른 서버 인스턴스에 데이터베이스 연결
중요 |
---|
최신 버전의 SQL Server에서 만든 데이터베이스를 이전 버전에서 연결할 수 없습니다. |
데이터베이스를 다른 서버 인스턴스에 연결하는 경우 사용자와 응용 프로그램에 일관된 환경을 제공하려면 로그인, 작업 등 데이터베이스의 일부 또는 모든 메타데이터를 다른 서버 인스턴스에서 다시 만들어야 할 수도 있습니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리를 참조하십시오.
데이터베이스를 연결하려면
이전 버전의 SQL Server 데이터베이스를 업그레이드하려면
SQL Server 2008에서 분리 및 연결 작업을 사용하여 사용자 데이터베이스를 SQL Server 2000 또는 SQL Server 2005에서 업그레이드할 수 있습니다. 그러나 다음과 같은 제한 사항이 있습니다.
SQL Server 2000 또는 SQL Server 2005를 사용하여 만든 master, model 또는 msdb 데이터베이스의 복사본은 연결할 수 없습니다.
분리되지 않고 복사된 복제 데이터베이스를 연결하는 경우에는 다음을 수행해야 합니다.
동일한 서버 인스턴스의 업그레이드된 버전에 데이터베이스를 연결하는 경우 연결 작업이 완료된 후 sp_vupgrade_replication을 실행하여 복제를 업그레이드해야 합니다. 자세한 내용은 sp_vupgrade_replication(Transact-SQL)을 참조하십시오.
데이터베이스를 버전에 관계없이 다른 서버 인스턴스에 연결하는 경우에는 연결 작업이 완료된 다음 sp_removedbreplication을 실행하여 복제를 제거해야 합니다. 자세한 내용은 sp_removedbreplication(Transact-SQL)을 참조하십시오.
분리 및 연결 작업을 사용하여 데이터베이스를 업그레이드하려면
데이터베이스 또는 데이터베이스 파일 이동
중요 |
---|
데이터베이스를 이동할 때는 분리 및 연결 작업 사용 대신 계획된 ALTER DATABASE 재배치 프로시저를 사용하는 것이 좋습니다. 자세한 내용은 데이터베이스 파일 이동을 참조하십시오. |
일반적으로 분리 및 연결 작업을 사용하면 데이터베이스를 이동할 수 있습니다. 데이터베이스를 이동하는 일반적인 시나리오는 다음 중 하나와 같습니다.
동일한 컴퓨터에 있는 다른 물리적 디스크로 이동. 예를 들어 데이터 파일이 들어 있는 디스크의 공간이 부족한 상태에서 다른 디스크에 새 파일을 추가하여 데이터베이스를 확장하는 대신 기존 파일을 확장하려 하는 경우.
데이터베이스를 다시 만들고 데이터베이스 백업을 복원할 필요 없이 다른 컴퓨터로 데이터베이스를 이동할 경우.
분리 및 연결 작업을 사용하여 데이터베이스를 이동하는 절차는 다음과 같습니다.
데이터베이스를 분리합니다.
데이터베이스 파일을 다른 서버 또는 디스크로 이동합니다.
이동된 파일의 새 위치를 지정하여 데이터베이스를 연결합니다.
분리 및 연결 작업을 사용하여 데이터베이스를 이동하려면