문제

저는 VS2008에 구축된 웹 애플리케이션 개발 초기 단계에 있습니다.나는 데스크톱 PC(대부분의 작업이 수행되는 곳)와 AnkhSVN을 사용하여 프로젝트 코드 동기화를 유지하는 노트북(가끔의 이식성을 위해)을 모두 가지고 있습니다.개발 데이터베이스(SQL Server Express)도 동기화 상태를 유지하는 가장 좋은 방법은 무엇입니까?

스키마가 변경될 때 다시 생성되는 생성 스크립트가 포함된 VS 데이터베이스 프로젝트가 SVN에 있습니다.원래 아이디어는 변경 사항이 있을 때마다 DB를 다시 생성하는 것이었지만 빠르게 고통스러워지고 있습니다.또한 데이터가 제대로 표시되는지 확인하기 위해 입력한 모든 샘플 행이 손실됩니다.

.MDF 및 .LDF 파일을 소스 제어하에 두는 것을 고려하고 있지만 SVN 업데이트를 수행하고 파일이 그 아래에서 빠져 나와 최신 복사본으로 교체되면 SQL Server Express가 이를 적절하게 처리할 수 있을지 의문입니다.몇 개의 큰 바이너리 파일을 소스 제어에 집어넣는 것은 단지 일회용 개발 데이터베이스일지라도 우아한 솔루션처럼 보이지 않습니다.어떤 제안이 있으십니까?

도움이 되었습니까?

해결책

데이터베이스 CREATE 스크립트 외에도 기본 데이터 또는 샘플 데이터 스크립트도 유지 관리하는 것이 어떻습니까?

이는 우리가 2년 넘게 유지 관리해 온 애플리케이션의 증분 버전에 대해 취한 접근 방식이며 매우 잘 작동합니다.기본 데이터 스크립트를 사용하면 QA 테스터가 보유한 데이터를 사용하여 버그를 재현할 수도 있습니다.

제가 얼마 전에 게시한 질문을 살펴보는 것도 좋습니다.

SQL 변경 스크립트 자동 생성을 위한 최고의 도구

다른 팁

분명히 이에 접근하는 방법은 여러 가지가 있으므로 더 나은 기반을 구축할 수 있는 여러 링크를 나열하겠습니다.이것은 과거에 다른 사람들을 시류에 동참시키려고 할 때 참조했던 링크입니다.

그러나 이 모든 것을 말하면서도 특정 유형의 버전 제어(수동 또는 반자동)를 구현할 만큼 충분히 헌신하지 않았다고 생각한다면 다음을 확인하는 것이 좋습니다.

이런 젠장!인생을 쉽게 만드는 것에 대해 이야기하십시오!프로젝트가 나에게서 멀어졌고 여러 사람이 스키마를 변경하고 여러 환경을 동기화해야 했습니다.Red Gate 제품을 두 데이터베이스에 연결하고 차이점을 확인한 다음 동기화하는 것은 쉬운 일이었습니다.

.MDF 및 .LDF 파일 대신 데이터베이스의 백업(.bak 파일)을 저장할 수 있습니다.
다음 스크립트를 사용하여 DB를 쉽게 복원할 수 있습니다.

use master
go

if exists (select * from master.dbo.sysdatabases where name = 'your_db')
begin
    alter database your_db set SINGLE_USER with rollback IMMEDIATE
    drop database your_db
end

restore database your_db
from disk = 'path\to\your\bak\file'
with move 'Name of dat file' to 'path\to\mdf\file',
     move 'Name of log file'  to 'path\to\ldf\file'
go

위에서 언급한 스크립트를 텍스트 파일 Restore.sql에 넣고 다음 명령을 사용하여 배치 파일에서 호출할 수 있습니다.

osql -E -i restore.sql

이렇게 하면 전체 프로세스를 자동화하는 스크립트 파일을 만들 수 있습니다.

  • SVN 리포지토리 또는 적절한 스토리지에서 최신 DB 백업 받기
  • bak 파일을 사용하여 현재 db 복원

우리는 더 높은 환경에서 백업을 수행하는 콤보를 사용합니다.
ApexSql을 사용하여 스키마의 초기 설정을 처리할 수도 있습니다.
최근에는 코드화되고 소스 제어되며 CI를 통해 실행되는 Subsonic 마이그레이션을 사용하여 변경 스크립트를 가져오고 있으며 텍사스의 Headspring에서 개발한 "tarantino" 프로젝트도 있습니다.

이러한 접근 방식의 대부분, 특히 후자는 대부분의 테스트 데이터 위에 사용해도 안전합니다.저는 특히 자동화된 마지막 2개 기능을 좋아합니다. 변경할 수 있고 다음에 누군가 최신 정보를 얻을 때 "업데이터"를 실행하면 최신 정보로 안내되기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top