SQL 2008에서 인스턴스를 복제하는 가장 효과적인 방법은 무엇입니까?


14

우리는 데이터베이스에 충분한 데이터를 가진 간단한 데이터베이스 인스턴스를 가지고있어 유용하게 사용할 수 있으며 데모 목적으로 사용할 수 있으며 랩톱에 복사하여 개발자 작업에 사용할 수 있도록하고 싶습니다. 나는 사무실에 없다. (일반 dev 데이터베이스 인스턴스는 약 150GB,이 인스턴스는 3GB입니다)

랩톱에서 인스턴스를 재생성하는 가장 반복 가능하고 스크립팅 가능한 방법은 무엇입니까? SqlServer2008 용 설치 프로그램을 다시 실행하고 인스턴스를 설정해야한다고 확신하지만 그 후에 ... 매달마다 오래된 데이터베이스를 삭제할 수 있기를 바랍니다. 하나의 데모 시스템이나 랩톱에서 인스턴스가 변경되지 않으므로 모든 새로운 내용을 랩톱에 복사하십시오. 그러나 데이터베이스 자체는 sprocs 등을 새로 고 치면서 업데이트됩니다.

모든 "drop database-files; add database-files {path}"스크립팅을 고려하여 일종의 실행 가능한 배치 파일에 보관 한 다음 "drop, delete, copy, add"할 수 있지만 궁금한 점이 있는지 궁금합니다. xcopy와 batch보다 더 나은 방법입니까?

나는 싼 것을 이것을하려고 노력하고있다 (우리는 항상 싼 것을 시도하고하지는 않는다). 나는 특히 RedGate 제품 등에 관심이 없다. 텍스트 편집기에서 쉽게 유지할 수있는 것을 원합니다.


단일 데이터베이스 또는 둘 이상의 데이터베이스가있는 SQL Server 인스턴스입니까? 랩톱 및 개발 시스템에 SQL Server가 설치되어 있고 하나의 데이터베이스가 있다고 가정하면 백업 및 복원을 사용할 수 있습니다. 개발 머신 DB 백업, 랩톱에 복사 및 복원, 그 반대의 경우도 마찬가지입니까?
CoderHawk

SQL Server Express Edition입니까? 또는 표준? SSIS 는 이와 같은 시나리오에 적합한 옵션이지만 불행히도 Express 및 Web Edition에서는 사용할 수 없습니다.
CoderHawk

죄송합니다 @Sandy ~ SQL Dev 2008입니다. MSDN으로 인해 추측 할 수있는 거의 모든 것에 액세스 할 수 있습니다.
jcolebrand

질문 제목은 혼란스럽지 않습니다. "SQL 2008에서 | instance |를 복제하는 가장 효과적인 방법은 무엇입니까?" -인스턴스 또는 데이터베이스?
CoderHawk

@Sandy ~ "인스턴스"... 실제로 모든 것을 원합니다.
jcolebrand

답변:


4

당신은 머리에 못을 박았다 : 파일을 복사하십시오. 나는 이것을 좋은 효과로 사용했습니다.

xcopy를 포함하지 않는 솔루션을 준비하기 위해 시간 투자를 포함하도록 "저렴한"을 정의해야한다고 말하고 싶습니다.


3

음, 이것이 도움이되는지 확실하지 않지만 프로덕션 데이터베이스를 "정리"하고 개발 남용에 대비하기 위해 일련의 스크립트를 사용하고 있습니다. 우리는 날짜 시간 열이있는 모든 큰 테이블을 가져오고 있으며 작년의 데이터 만 포함하여 테이블을 다시 작성하고 있습니다. 약 200GB의 전체 db에서 개발을 위해 약 40GB db에 도달합니다. 주로 각 테이블에 대한 bcp 파일을 생성하고 관련 제약 조건을 포함하여 테이블을 다시 생성 한 다음 작년 데이터 만 대량 삽입하기위한 동적 스크립트를 생성합니다.

어쩌면 이것을 할 수있는 도구가 있지만 우리 가게는 저렴합니다 :-).


예, 우리는 많은 것들을 위해 BCP 경로를 사용합니다. 그래서 나는 당신이 말하는 것을 얻었고, 이것 중 일부를 잘라내는 것이 좋을 것입니다. 거기에 더 추가하려고합니다. 전체 인스턴스를 복사하고 반복적으로 반복하는 방법이 있다고 생각합니다. 그러나 그렇지 않으면 나는 당신이 말하는 것과 같은 압정에 있다고 생각합니다.
jcolebrand

따라서 모든 단계를 일괄 적으로 반복하십시오 :). SQL에는 배치 매개 변수가 있으며 배치 파일을 SQL 파일과 결합하여 멋진 패키지를 얻을 수 있습니다. 다른 도메인에서 작동하는 사용자 지정 로그 전달 (dumb) 패키지를 만들었으며 모든 db 준비는 cmd / sql 파일에서 수행됩니다. 사용을 위해서만 명명 된 인스턴스를 생성 할 수 있으며 서비스 시작 / 중지, DB 복원, 정리, 준비, 백업 및 특정 폴더로 배송 할 수 있습니다. 어쩌면 powershell에서 일부 작업을 더 빠르게 수행 할 수도 있습니다. 그러나 나는 그것에 익숙하지 않습니다.
Marian

그래, 그 생각이야;)
jcolebrand

@jcolebrand-Norton Ghost 또는 Clonezilla와 같은 도구가 도움이 되었습니까? 당신은 당신의 운동장 어딘가에 prod 백업 폴더를 복사 한 다음 다시 모든 재미 (복원 .... trim ... 등)를 수행해야합니다. 복사 작업을 스크립팅 할 필요가 없으며 sql 부분 만 처리합니다. :).
Marian

oooooh 유용 할 수 있습니다. 새로운 고려 사항.
jcolebrand

0

이러한 시스템과 일치하도록 스키마를 업그레이드하는 가장 쉬운 방법은 Red Gate SQL Compare 또는 Embarcadero DB Change Manager와 같은 도구를 사용하는 것입니다.

아마도 동일한 스키마 비교를 수행하고 데이터베이스 스키마를 업그레이드하기위한 DDL을 제공 할 수있는 다른 도구가 많이 있습니다.

옵션

  1. 타사 도구 사용
  2. 데이터베이스 백업 및 복원-랩톱의 공간 제한으로 인해 데이터를 삭제하려면 준비 인스턴스로 복원해야 할 수도 있습니다.
  3. SMO를 사용하여 고유 한 데이터베이스 스크립터를 작성하고 오브젝트를 스크립팅하는 작업을 작성한 다음 필요한 매월 / 시간마다 스키마를 다시 작성한 다음 SSIS를 사용하여 새 오브젝트에 데이터를로드하십시오.

인스턴스의 "데이터베이스 백업 및 복원"은 어떻게 작동합니까? 내가 원하는 에서 데이터를 유지하기 위해 이러한 이 생산보다 단지 작은 전체 데이터 집합이기 때문에 테이블.
jcolebrand

SSIS는 아마도 내가 필요한 것을 할 수있게 할 것입니다.하지만 그것에 대해 충분히 알지 못합니다. 더 조사해야합니다.
jcolebrand

@jcolebrand-열 추가와 같은 작업을 수행 할 때 실제 시스템에서 데모 시스템으로 데이터를 이동하는 방법을 고려해야하기 때문에 백업 복원을 제안했습니다. 그러나 이것은 다른 백업 및 복원 / 분리 및 연결 전에 복원 후 데이터 제거가 필요한 단점이 있습니다.
johndacostaa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.