데이터베이스 분리 및 연결

업데이트: 2006년 12월 12일

데이터베이스의 데이터 및 트랜잭션 로그 파일은 분리할 수 있으며 동일한 SQL Server 인스턴스나 다른 인스턴스에 다시 연결할 수 있습니다. 데이터베이스 분리 및 연결은 데이터베이스를 같은 컴퓨터의 다른 SQL Server 인스턴스로 변경하거나 데이터베이스를 이동하는 경우 유용합니다.

[!참고] SQL Server 디스크상 저장소 형식은 64비트 및 32비트 환경에서 동일합니다. 따라서 32비트 및 64비트 환경에서 연결 작업을 수행할 수 있습니다. 한 환경에서 실행 중인 서버 인스턴스에서 분리된 데이터베이스를 다른 환경에서 실행하는 서버 인스턴스에 연결할 수 있습니다.

[!참고] 데이터베이스를 분리 및 연결할 때마다 설정되는 파일 사용 권한에 대한 자세한 내용은 데이터 및 로그 파일 보안을 참조하십시오.

데이터베이스 분리

데이터베이스를 분리하면 SQL Server 인스턴스에서 해당 데이터베이스가 제거되지만 데이터베이스의 데이터 파일 및 트랜잭션 로그 파일은 그대로 유지됩니다. 이 파일은 데이터베이스가 분리된 해당 서버뿐 아니라 SQL Server 인스턴스가 실행되는 모든 컴퓨터에 데이터베이스를 연결하는 데 사용할 수 있습니다.

다음 중 하나라도 해당하는 경우 데이터베이스를 분리할 수 없습니다.

  • 데이터베이스를 복제하여 게시한 경우. 데이터베이스가 복제된 경우 해당 데이터베이스의 게시를 해제해야 합니다. 따라서 데이터베이스를 분리하려면 먼저 sp_replicationdboption을 실행하여 게시를 해제해야 합니다.

    [!참고] sp_replicationdboption을 사용할 수 없는 경우 sp_removedbreplication을 실행하여 복제를 제거할 수 있습니다.

  • 데이터베이스에 데이터베이스 스냅숏이 있는 경우.
    데이터베이스를 분리하려면 먼저 해당 데이터베이스의 모든 스냅숏을 삭제해야 합니다. 자세한 내용은 방법: 데이터베이스 스냅숏 삭제(Transact-SQL)를 참조하십시오.

    [!참고] 데이터베이스 스냅숏은 분리하거나 연결할 수 없습니다.

  • 데이터베이스가 데이터베이스 미러링 세션에서 미러되고 있는 경우.
    데이터베이스는 세션이 종료된 후에야 분리될 수 있습니다. 자세한 내용은 데이터베이스 미러링 제거를 참조하십시오.

  • 주의 대상 데이터베이스인 경우. SQL Server 2005에서 주의 대상 데이터베이스는 분리할 수 없습니다. 분리하려면 먼저 데이터베이스를 응급 모드로 설정해야 합니다. 데이터베이스를 응급 모드로 설정하는 방법은 ALTER DATABASE(Transact-SQL)를 참조하십시오.

  • 데이터베이스가 시스템 데이터베이스인 경우

데이터베이스를 분리하면 SQL Server의 인스턴스에 대한 계획 캐시가 삭제됩니다. 계획 캐시를 삭제하면 모든 후속 실행 계획이 다시 컴파일되며 일시적으로 갑자기 쿼리 성능이 저하됩니다. SQL Server 2005 서비스 팩 2에서는 계획 캐시의 삭제된 각 캐시스토어에 대해 SQL Server 오류 로그에 "데이터베이스 유지 관리 또는 재구성 작업으로 인해 '%s' 캐시스토어(계획 캐시의 일부)에 대한 캐시스토어 플러시가 SQL Server에서 %d번 발견되었습니다"라는 정보 메시지가 있습니다. 이 메시지는 캐시가 해당 시간 간격 내에 플러시되는 동안 5분마다 기록됩니다.

데이터베이스 분리

백업, 복원 및 분리

읽기 전용 데이터베이스를 분리하면 차등 백업의 차등 기반에 대한 정보가 손실됩니다. 자세한 내용은 읽기 전용 데이터베이스 백업을 참조하십시오.

분리 오류에 대한 대처 방법

데이터베이스를 분리하는 동안 발생한 오류로 인해 데이터를 완전히 닫지 못하고 트랜잭션 로그를 다시 작성하지 못할 수 있습니다. 오류 메시지가 표시되면 다음의 수정 작업을 수행하십시오.

  1. 주 파일뿐 아니라 데이터베이스와 관련된 모든 파일을 다시 연결합니다.
  2. 오류 메시지를 발생시킨 문제를 해결합니다.
  3. 데이터베이스를 다시 분리합니다.

데이터베이스 연결

복사 또는 분리한 SQL Server 데이터베이스를 연결할 수 있습니다. SQL Server 2005에서 데이터베이스의 일부인 전체 텍스트 파일은 데이터베이스에 연결됩니다. 자세한 내용은 전체 텍스트 카탈로그 연결 및 분리를 참조하십시오.

ms190794.security(ko-kr,SQL.90).gif보안 정보:
알 수 없거나 신뢰할 수 없는 출처의 데이터베이스는 연결 또는 복원하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 출처의 데이터베이스를 사용하기 전에 프로덕션 서버가 아닌 서버에서 해당 데이터베이스에 대해 DBCC CHECKDB를 실행하고 저장 프로시저 또는 다른 사용자 정의 코드 같은 데이터베이스의 코드도 검사하십시오.

연결 시 데이터베이스가 시작됩니다. 일반적으로 데이터베이스를 연결하면 데이터베이스를 분리 또는 복사한 시점과 동일한 상태가 됩니다. 하지만 SQL Server 2005에서 연결 및 분리 작업을 수행하면 해당 데이터베이스의 데이터베이스 간 소유권 체인을 사용할 수 없게 됩니다. 체인을 설정하는 방법은 cross db ownership chaining 옵션을 참조하십시오. 또한 데이터베이스를 연결할 때마다 TRUSTWORTHY는 OFF로 설정됩니다. TRUSTWORTHY를 ON으로 설정하는 방법은 ALTER DATABASE(Transact-SQL)를 참조하십시오.

데이터베이스를 연결할 경우 모든 데이터 파일(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가 주 파일에 저장된 로그 위치를 업데이트할 수 없으므로 새 로그 파일을 작성할 수 없기 때문입니다.
    ms190794.note(ko-kr,SQL.90).gif중요:
    읽기 전용 데이터베이스를 분리한 다음 다시 연결하는 경우 차등 기반 정보는 손실됩니다. 이렇게 되면 master 데이터베이스는 해당 읽기 전용 데이터베이스와 동기화되지 않습니다. 따라서 이후 수행되는 차등 백업에서 예기치 않은 결과가 나올 수 있습니다. 그러므로 읽기 전용 데이터베이스를 차등 백업하는 경우에는 데이터베이스를 다시 연결한 다음 전체 백업을 수행하여 현재 차등 기반을 만들어야 합니다.

백업, 복원 및 연결

전체 오프라인 또는 부분적인 오프라인 상태인 데이터베이스와 마찬가지로 파일을 복구하는 데이터베이스는 연결될 수 없습니다. 이때 복원 시퀀스를 중지하면 데이터베이스를 연결할 수 있습니다. 그런 다음 복원 시퀀스를 다시 시작할 수 있습니다.

다른 서버 인스턴스에 데이터베이스 연결

데이터베이스를 다른 서버 인스턴스에 연결하는 경우 사용자와 응용 프로그램에 일관된 환경을 제공하려면 로그인, 작업 등 데이터베이스의 일부 또는 모든 메타데이터를 다른 서버 인스턴스에서 다시 만들어야 할 수도 있습니다. 자세한 내용은 다른 서버 인스턴스에서 데이터베이스를 사용할 수 있도록 할 때 메타데이터 관리를 참조하십시오.

[!참고] 최신 버전의 SQL Server에서 만든 데이터베이스를 이전 버전에서 연결할 수 없습니다.

[!참고] 연결 작업은 VarDecimal 저장소 형식에서 올바르게 수행됩니다. 하지만 각 데이터베이스 엔진은 최소한 SQL Server 2005 서비스 팩 2로 업그레이드되어야 하고 모든 관련 데이터베이스에 VarDecimal 저장소 형식을 사용할 수 있어야 합니다. 예를 들어 VarDecimal 저장소 형식을 사용할 수 있는 서비스 팩 2 데이터베이스를 이전 버전의 SQL Server에 연결할 수 없습니다. VarDecimal 저장소 형식에 대한 자세한 내용은 Decimal 데이터를 가변 길이로 저장을 참조하십시오.

데이터베이스를 연결하려면

이전 버전의 SQL Server 데이터베이스를 업그레이드하려면

SQL Server 2005에서 분리 및 연결 작업을 사용하여 사용자 데이터베이스를 SQL Server 7.0 또는 SQL Server 2000에서 업그레이드할 수 있습니다. 그러나 다음과 같은 제한 사항이 있습니다.

  • SQL Server 7.0 또는 SQL Server 2000을 사용하여 만든 master, model 또는 msdb 데이터베이스의 복사본은 SQL Server 2005에서 연결할 수 없습니다.
  • 인덱스 생성 작업을 포함한 SQL Server 7.0 로그 파일은 SQL Server 2000 또는 SQL Server 2005에 연결할 수 없습니다.
  • 분리되지 않고 복사된 복제 데이터베이스를 연결하는 경우
    • 동일한 서버 인스턴스의 업그레이드된 버전에 데이터베이스를 연결하는 경우 연결 작업이 완료된 후 sp_vupgrade_replication을 실행하여 복제를 업그레이드해야 합니다. 자세한 내용은 sp_vupgrade_replication(Transact-SQL)을 참조하십시오.
    • 데이터베이스를 버전에 관계없이 다른 서버 인스턴스에 연결하는 경우에는 연결 작업이 완료된 다음 sp_removedbreplication을 실행하여 복제를 제거해야 합니다. 자세한 내용은 sp_removedbreplication(Transact-SQL)을 참조하십시오.

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

데이터베이스 또는 데이터베이스 파일 이동

ms190794.note(ko-kr,SQL.90).gif중요:
데이터베이스를 이동할 때는 분리 및 연결 작업 사용 대신 계획된 ALTER DATABASE 재배치 프로시저를 사용하는 것이 좋습니다. 자세한 내용은 데이터베이스 파일 이동을 참조하십시오.

일반적으로 분리 및 연결 작업을 사용하면 데이터베이스를 이동할 수 있습니다. 데이터베이스를 이동하는 일반적인 시나리오는 다음 중 하나와 같습니다.

  • 동일한 컴퓨터에 있는 다른 물리적 디스크로 이동. 예를 들어 데이터 파일이 들어 있는 디스크의 공간이 부족한 상태에서 다른 디스크에 새 파일을 추가하여 데이터베이스를 확장하는 대신 기존 파일을 확장하려 하는 경우.
  • 데이터베이스를 다시 만들고 데이터베이스 백업을 복원할 필요 없이 다른 컴퓨터로 데이터베이스를 이동할 경우.

분리 및 연결 작업을 사용하여 데이터베이스를 이동하는 절차는 다음과 같습니다.

  1. 데이터베이스를 분리합니다.
  2. 데이터베이스 파일을 다른 서버 또는 디스크로 이동합니다.
  3. 이동된 파일의 새 위치를 지정하여 데이터베이스를 연결합니다.

분리 및 연결 작업을 사용하여 데이터베이스를 이동하려면

참고 항목

개념

데이터베이스 분리 및 연결
데이터 및 로그 파일 보안
파일 및 파일 그룹 이해

관련 자료

CREATE DATABASE(Transact-SQL)
sp_detach_db(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • SQL Server 디스크상 저장소 형식이 64비트 및 32비트 환경에서 동일하다는 참고를 추가했습니다.
  • "다른 서버 인스턴스에 데이터베이스 연결" 섹션에 참고를 추가했습니다.
  • VarDecimal 저장소 형식 관련 참고를 추가했습니다.

2006년 7월 17일

새로운 내용
  • "데이터베이스 분리" 섹션에 계획 캐시 삭제에 대한 정보를 추가했습니다.

2006년 7월 17일

새로운 내용
  • 시스템 데이터베이스 분리에 대한 제한 사항을 추가했습니다.
  • "백업, 복원 및 분리" 섹션을 추가했습니다.
  • "백업, 복원 및 연결" 섹션을 추가했습니다.

2005년 12월 5일

새로운 내용
  • 보안 정보를 추가했습니다.