생성하는 데이터베이스에 대한 스크립트의 SQL 서버 데이터베이스의 버전 관리

StackOverflow https://stackoverflow.com/questions/9006030

  •  14-11-2019
  •  | 
  •  

문제

의 범위 내에서 책임 프로그래밍 및 버전 관리 시작하고 싶 버전으로 내 데이터베이스에 변경 때문에 특히 난에서 개발하는 데이터베이스를 인스턴스는 다음 그것을 이동하는 생산입니다.나는 모든 것은 진정한 의미에서 이렇게 하는 방법.내가 사용하고 Visual Studio2010 년 프로 내 IDE 입니다.거기서 문서를 만드는 이 프로세스는 간단하고 감지할 수 있는 데이터베이스에 변경 내용과 상대적으로 쉽게?또는 나는 무엇을 해야에서는 워크플로를 확인이 더 쉽습니까?

도움이 되었습니까?

해결책

과거 에서이 일종의 일을 성공적으로 수행 한 한 가지 방법은 SQL 소스 제어 .Visual Studio는이 기능을 제공하지 않습니다.

또는 SSMS를 사용하여 데이터베이스 스크립트를 생성하고 파일로 저장할 수 있습니다.그런 다음 스크립트를 확인할 수 있습니다.하나의 파일에 전체 DB 스크립트를 생성할지 여부 또는 객체별로 객체에서 수행할지 여부를 선택할 수 있습니다.동기화 부분은 프로덕션에서 스크립트를 실행하여 사용자가 수행해야합니다.결론적으로 총 악몽 .

RedGate는 데이터베이스를 동기화하는 데 훌륭한 SQL 비교를 제공합니다.귀하 또는 귀하의 회사가 그들을 감당할 수 있다면 그들의 제품을 살펴보십시오.

다른 팁

우리가 사용하는 우리 자신의 DB 솔루션에 집에 가져오는 모든 도구가 필요한 적절한 DB 버전을 관리합니다.안을 실현할 수 있는지 완벽한 솔루션을 위한 모든 사람,나는 당신을 초대이다(그것은 오픈 소스): bsn ModuleStore

의 버전 관리 측면 다음과 같습니다:도구할 수 있습 SQL 스크립트는 반 자동으로,그리고 그것은 포맷에 소스 코드에서는 균일 형식입니다.파일 것입니다 따라서 항상 동일한 같은 소스에 상관없이 언제 누구에 의해 무언가가 스크립트;따라서 이것은 작품과 함께 멋지게 비 잠금 source 제어 시스템(특히 SVN,Git 또는 Mercurial).

이 포맷은 모든 문서 같은 형태(예:선택 사양 등의 키워드 AS, INNER, OUTER etc.처리하고 있습니다),스크립트의 모든 것을"dbo"스키마(경우에도 다른 하나),모두 식별자로서 대괄호([something]),대문자로 변경이 모든 예약어가 들여쓰기 등입니다.

외 버전 관리 런타임의 일부는 도구할 수 있는 차이에 실행 중인 DB 그리고 스크립트를 만들(DB 소스 코드)에 적용이 자동으로 업데이트에 대한 모든 비파괴적인 변화(예:업데이트 인덱스,제약,보,저장되는 절차,트리거로 사용자 지정 유형,새로운 테이블 등).Destructuve 변경해야 scriped 수동으로(테이블이 변경되는 다음 일반적으로 필요한 데이터 변환).런타임이 확인되는 모든 업데이트 트랜잭션에서 수행하고 롤백하는 경우 결과 DB 일치하지 않은 스크립트를 만들고,따라서 당신의 안전성을 알고 있는 DB 를 정확히 버전에 응용 프로그램에서 필요로 하는 경우에도 변경되었는지 여부와 수 있습니다.

또한,여러"modules"에서 사용할 수 있는 단일 데이터베이스입니다.각 모듈로 저장된 스키마와 독립적이 기타 스키마를 만들고,그것이 가능한 추가 모듈을 제거에서 하나의 DB,을 피하는 것을 만들 필요가에 대해 여러 데이터베이스 응용 프로그램의 다른 부분에.또한,사용의 스키마 이렇게 확인이 없는 이름을 충돌 사고로 이어질 수 있습니다.

그것은 협조할 수 있는 도구 세트가 없는 종속성을 SMO,그것은 자율입니다.

SVN에 데이터베이스 스크립트를 저장하십시오. 다음은 참조 SVN Tortoise 사용 방법

또는

VSS에서 데이터베이스 스크립트를 저장하십시오. 다음은 참조 vss 란 무엇입니까? 어떻게 그걸 사용할 수 있습니까?

두 경우 모두 변경 사항을 추적 할 수 있으므로 앞으로는 버전 형식으로 저장된 기록을 확인할 수 있습니다.

빨간색 게이트 제품도 사용할 수 있습니다

편집

어떻게 변화했는지 어떻게 꺼내

비교 기능을 사용하여 이전 버전의 변경 사항을 확인하십시오.

라이브 데이터베이스 서버에 변경 사항을 어떻게 적용합니까?

서버에서 최신 파일을 다운로드하십시오.

연결된 스크립트의 테이블에 대한 DROP 문을 사용하지 않기를 바랍니다. 테이블에서 모든 레코드를 삭제할 수 있습니다.

DROP 문은 저장된 프로,보기, 기능 등을 위해 발생합니다.

아래의 설명 계획을 사용하여 프로덕션 서버에서 완전한 최신 데이터베이스 스크립트 파일을 실행해야합니다

1. Remove Drop Statement for Schema DDL
2. Add Drop/Create Statements for Stored Proc/Views
3. Include Alter statements DML of schema.
.

이것이 확실히 당신을 도울 것입니다.

여기에 이미지 설명

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