연결 / 분리 vs. 백업 / 복원


14

다른 테스트 환경을 설정하기 위해 중복 데이터베이스를 만들려면 데이터베이스 전체를 다른 서버로 전송해야합니다.

두 가지 선택이 있습니다.

  1. 소스 서버에서 전체 백업을 수행하고 대상 서버에서 복원하십시오.
  2. 소스 서버에서 분리하거나 대상 서버에서 첨부하십시오.

내 요구 사항에 따라 두 솔루션의 장단점은 무엇입니까?

SQL Server 2008 Enterprise를 사용하고 있습니다.

답변:


12

일반적으로 백업 / 복원을 선택해야합니다. 대부분의 상황에서 더 빠릅니다.

프로덕션에서도 테스트를 위해 일관되게 사용할 수 있습니다.

백업 / 복원 대 분리 / 연결이 언급 된이 관련 질문도 참조하십시오.

SQL Server 마이그레이션 복원 백업 및 복사 데이터 및 로그 파일

WITH COPY_ONLY기존 유지 관리 계획 백업 체인을 손상시키지 않도록 옵션을 백업에 추가하십시오 .


SQL 2008 Enterprise는 백업 압축을 도입했습니다. 압축 된 백업이 100GB보다 훨씬 작기 때문에 MDF / LDF를 통한 복사보다 쓰기 / 복사 /로드가 더 빠를 수 있습니다.
Thomas Rushton

6
  1. 데이터베이스를 분리하면 데이터베이스가 오프라인 상태가됩니다. 데이터베이스를 다른 서버로 복사하는 동안 온라인 상태를 유지해야하는 경우 백업하십시오.
  2. 백업 파일 (.bak)의 이동 및 복원은 여러 mdf / ldf 파일을 이동 및 첨부하는 것보다 간단하고 쉽습니다 (데이터베이스를 분리 한 경우와 동일).
  3. 서류 상으로는 데이터베이스 분리 / 연결이 기술적으로 더 빠를 수 있지만 실제로는 백업 / 복원이 더 빠르고 쉽습니다. 데이터베이스를 분리 할 때는 먼저 원래 데이터베이스를 오프라인으로 만들어야하고 (모든 사람과 모든 것을 분리) 데이터베이스를 다시 연결할 때까지 사용할 수 없습니다. 또한 백업을 사용하면 모든 파일이 그룹화되는 반면 모든 파일을 추적해야합니다.

백업 / 복원하기로 결정한 경우 백업 중에 WITH COPY_ONLY 옵션을 사용하여 기존 유지 관리 계획의 백업 체인이 손상되지 않았는지 확인하십시오.

.bak 파일은 잘 압축되므로 백업을 진행하기로 결정한 경우 이동하기 전에 백업을 압축하면 전송 시간이 절약 될 수 있습니다.


4

원래 데이터베이스를 작동 가능한 상태로두기 때문에 백업 / 복원을 원합니다.

특히 '프로덕션에서 테스트로'변환을 수행하는 경우 프로덕션 데이터베이스가 온라인 상태를 유지하는 것이 중요합니다.

백업 / 복원은 더 안전한 옵션 이기도합니다 . 분리 시작, 복사, 첨부 등의 시작 부분 사이에서 파일이 손상되면 어떻게됩니까? 최소한 백업을 수행하고 파일이 손상되면 다시 시작할 수 있습니다. 분리가 발생하면 데이터베이스가 사라집니다.

또한 나에게 (다른 것보다 더 많은 느낌이 들지만) 백업 / 복원은 "매일의 작업"이지만 분리 / 연결은 예외적 인 상황에서하는 일입니다. 이 아이디어를 어디서 얻었는지 묻지 마십시오. ;-)


1

항상 백업 / 복원의 "복원"부분에 문제가있었습니다. 나는 결국 포기하고 세부 사항을 인용 할 수 없으며 그 이후로 분리 / 복사 / 첨부되었습니다.

분리의 유일한 점은 DBMS가 데이터베이스를 삭제하지 않도록 확인해야한다는 것입니다. 이런 일이 있었으며 그 광경은 그렇지 않았습니다.


5
DBMS는 분리시 데이터베이스를 삭제하지 않습니다. detach가 파일을 삭제하고 복원에 문제가있는 경우 어떤 종류의 상점에 있습니까?
gbn

@Will : sp_detach_db는 DROP이 아닙니다. 2 개의 별도 및 관련없는 명령이 별도로 실행되어야합니다. 분리 된 데이터베이스는 DROP하거나 SQL을 통해 파일을 삭제할 수 없습니다. 삭제 된 데이터베이스는 분리 할 수 ​​없습니다. 분리에는 코드 또는 SSMS를 통한 "파일 삭제"옵션이 없습니다. 따라서 DROP에서 파일을 삭제하는 옵션을 고의로 선택해야하므로 첫 번째 의견을 정당화 할 수 있습니다. 분리되지 않음
gbn

1

copy_onlyDOS 쉘에서이 방법을 사용하여 백업하는 것이 좋습니다 (트랜잭션 로그를 방해하지 않도록) .

C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup디렉토리 에서 실행하십시오 .

backup.bat SQLDBNAME

어디에 backup.bat포함 (가독성을 위해 줄 바꿈 추가) :

sqlcmd.exe -U username -P xxxxxxx -S SQL-SERVERNAME 
    -Q "BACKUP DATABASE %1 TO DISK = '%1_COPYONLY.BAK' WITH COPY_ONLY,INIT;"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.