2010-01-26 8 views
2

두꺼운 클라이언트와 씬 클라이언트 구성 요소로 앱을 개발합니다. 또한 스키마 변경으로 인해 버전 번호가 변경되고 스크립트가 적용될 수 있도록 데이터베이스를 버전 화합니다. 그러나 씩 클라이언트가 변경되면 데이터베이스 변경 사항이 항상 발생하는 것은 아닙니다. 예, 오늘의 데이터베이스 변경으로 인해 열이 추가되고 씩 클라이언트에 필요하지만 내일의 데이터베이스 변경으로 인해 외부 변경이 필요없는 저장 프로 시저의 오류가 해결 될 수 있습니다. 후방 호환성이 있으며 일부는 호환되지 않을 때 특정 데이터베이스 버전과 호환되는지 여부를 테스트하기 위해 thick-client를 코딩 할 수 있습니까?두꺼운 클라이언트가 데이터베이스 스키마와 호환되는지 테스트하는 방법은 무엇입니까?

누구도 신경 쓰지는 않지만, 우리는 SQL Server와 통합되는 .NET 응용 프로그램입니다. 그러나이 질문은 플랫폼 관련 질문보다 더 많은 질문입니다. 플랫폼 별 솔루션이없는 한 ...

+0

http://stackoverflow.com/questions/115369/do-you-source-control-your-databases를 참조하십시오. 중복 된 http://stackoverflow.com/questions/33638/testing-and-managing-database-versions-against-code-versions –

+0

http://stackoverflow.com/questions/1534579/verify-database-changes의 복제본 -version-control 및 http://stackoverflow.com/questions/308/is-there-a-version-control-system-for-database-structure-changes 및 http://stackoverflow.com/questions/257045/managing - 데이터베이스 이전 - 데이터베이스 - 변경 - 이전 - 공유 - –

답변

3

예를 들어, 테이블을 만들 수 있습니다. 메타 데이터를 두 개의 문자열 열로 채우고 현재 스키마 버전과 함께 항목을 추가합니다. 나는 당신이 지금 비슷한 것을한다고 가정합니다.

그리고 버전을 두 개의 숫자로 나눕니다 (major/minor scheme과 같이). 이전 버전과 호환되지 않는 방식으로 스키마를 변경하면 주요 버전이 업데이트됩니다. 이전 버전과의 호환성을 변경 한 후에는 마이너 버전 만 업데이트하면됩니다.

메이저는 현재 스키마와 호환되는지를 확인하기 위해 앱에서 사용되며, 메이저 + 마이너를 사용하여 스키마를 업데이트 할 수 있는지 여부를 확인합니다.

저는 이것이 대부분의 응용 프로그램에서 사용되는 솔루션이라고 생각합니다.

0

메이저/마이너 버전 번호 체계를 채택 할 수 있습니까?

주 번호가 변경되면 클라이언트의 업데이트가 필요하며 부 번호의 변경은 필요하지 않습니다.

+0

주 버전 및 부 버전을 기록하는 "버전 번호"테이블은 모든 데이터베이스 설계에 필수적입니다. 하나의 행이 있어야합니다. 응용 프로그램은 아무것도 수행하기 전에 단순히 쿼리해야합니다. –

+0

@ S.Lott :이 "버전 번호"테이블 접근법에 대해 좀 더 자세히 설명해 주시겠습니까? –

+0

@Tahir Akhtar :'CREATE TABLE MY_APPLICATION_VERSION (컴포넌트 VARCHAR, 메이저 넘버, 마이너 넘버);'모든 변경은이 테이블을 명명 된 컴포넌트의 현재 버전으로 업데이트합니다. 모든 응용 프로그램은 이름 지정된 구성 요소의 현재 버전을 가져 오기 위해이를 쿼리합니다. –

0

이 중 하나가 있으면 버전 번호가 항상 증가합니다.

데이터베이스가 필요한 최소 클라이언트 버전을 알고 있고 클라이언트가 요구하는 최소 데이터베이스 버전을 알고있는 경우 업그레이드가 필요한 경우를 결정하는 간단한 검사입니다. 이제는 저장된 내용에 로직을 캡슐화할지 여부를 결정합니다. 프로 시저 또는 코드에서 귀하의 결정입니다 ...