태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


2009/09/14 17:30

SQL Server 데이터베이스 스키마 비교 - DBDiff

소개

데이터베이스의 스키마를 비교하는 툴은 대부분 상용제품이다.

OpenDBDiff이라는 오픈소스프로젝트가 있는데 거의 대부분의 개체비교를 지원하지만 소소한 버그와 스크립트 비교가 어렵다는 등의 단점이 있다.

그 외에 Visual Studio 2008 Team System 버전에 포함된 Schema Compare 프로젝트의 경우에는 UI도 편하고 스크립트 비교도 시각적으로 표현해주는 등의 장점도 있지만 우선 Visual Studio 2008 Team System 라이센스가 있어야 하고 비교옵션을 조정해 원하는 부분만 비교하지 못하는 등의 단점이 있다.

 

보통 작은 규모의 데이터베이스에서는 특정개체(테이블, 뷰, 저장프로시저, 사용자정의함수 등)만 주로 사용을할 뿐만 아니라 스키마 비교를 할 때에도 부분적으로 수행하기를 원하기 때문에 상용제품이나 옵션이 복잡한 프로그램이 굳이 필요하지 않다.

 

이런 이유로 내게 꼭 필요한 기능만 있고 사용하기 간편한 스키마 비교 프로그램을 만들기로 하였고 흔한 이름이지만 DBDiff이라는 프로그램이 만들어지게 되었다.

DBDiff은 눈치 챘겠지만 OpenDBDiff과 Visual Studio 2008의 Schema Comapare를 많은 부분 참조했다.

(소스 수준 참조가 아니라 유저 인터페이스 수준 참조)

 

주요기능

지원하는 개체

DBDiff에서는 다음 개체의 스키마를 비교할 수 있다.

  • Tables
    • Column Collation
    • Identity Options
    • Column Order
    • Default Value
    • File Group
  • Constraints
    • Primary Key
    • Foreign Key
    • Unique Key
    • Check
  • Indexes
    • Pad Index
    • Ignore Dup Key
    • Allow Row Locks
    • Allow Page Locks
    • Fill Factor
    • File Group
  • Views
  • Procedures
  • Functions
  • Extended Properties

 

지원 되지 않는 개체는 다음과 같다.

  • Indexes
    • XML Indexes
  • Table Types
  • User Data Types
  • CLR Objects
    • Assemblies
    • CLR User Defined Functions
    • CLR Stored Procedures
    • CLR Triggers
  • Triggers
    • DML Triggers
    • DDL Triggers
  • Synonyms
  • Schemas
  • File Groups
  • Partition Functions
  • Partition Schemas
  • Users
  • Roles

현재는 지원되지 않는 개체가 너무 많지만 조금씩 늘려나갈 것이고, 작은 규모의 데이터베이스에서는 현재 지원하는 개체만으로도 충분히 쓸모가 있으리라 생각한다.

 

스크립트 비교

개체 생성 스크립트를 기준으로 비교원본과 비교대상의 스크립트를 텍스트 비교할 수 있다.

텍스트 비교는 라인단위로 이뤄지고 동일/추가/삭제 기준으로 텍스트를 비교한다.

(변경된 라인은 삭제 및 추가로 인식한다.)

 

스크린 샷

 

원본과 대상 데이터베이스를 설정한 후 확인버튼을 클릭하면 스키마 비교 결과가 다음과 같이 출력된다.

 

 

변경된 개체가 있을 경우 원본과 대상 데이터베이스의 해당 개체 생성 스크립트를 텍스트 비교할 수 있다.

서로 차이가 있는 부분이 종류(추가/삭제)별로 다르게 하이라이트되어  쉽게 차이를 파악할 수 있다.

 

다운로드


DBDiff(20090914).zip

수정이력

프로그램과 본 문서의 수정내역은 이 곳에 기록한다.

수정내역이 생기면 별도의 문서를 생성하지 않고 본 문서를 직접 수정하되 수정된 항목을 이 곳에 기록한다.

 

날짜 내용 비고
2009-09-14 최초 생성  

 

- 문서 끝 -

Trackback 0 Comment 1