2011-02-07 6 views
2

여기 내 딜레마입니다.여러 SQL Server 데이터베이스 스키마를 업데이트하는 방법

저는 ASP.net MVC3 및 SQL Server를 사용하는 SaaS에서 작업하고 있습니다.

사용자가 소프트웨어를 여러 회사에, 각 회사는 여러 사용자가됩니다. 데이터가 한 회사에서 다른 회사로 우연히 보이지 않도록 각 회사의 개별 데이터베이스로 데이터베이스를 설정 한 다음 웹 서버가 UI, 로직 등 다른 모든 것을 처리합니다.

이미 문제가되기 전에 그것을 처리하는 최선의 방법을 결정해야합니다. 이러한 여러 데이터베이스를 가지고 있다면 올해 모든 것이 잘 진행되면 우드를 노크 우리는 잠재적으로 연말까지 500 명의 고객을 확보 할 수 있습니다. 분명한 이유로 스키마를 수동으로 동기화하는 것은 문제가되지 않습니다. VS2010에는 도움이 될만한 멋진 SQL 비교 스크립트 도구가 있지만 모든 데이터베이스가 최신 버전인지 확인하는 방법은 무엇입니까? 클라이언트가 특정 데이터베이스가 새로운 테이블을 추가 할 것입니다 그들의 특정한 필요를 위해 작은 위젯과 물건을 추가 할 수 있도록

문제 2

시스템을 설계하는 방식은 매우 모듈입니다. 그래서 이론 상으로는 각 데이터베이스가 조금씩 다를 것입니다. 나는이 문제를 처리하는 가장 좋은 방법은 또는이 상황을 공격 할 수있는 실제적인 방법은 아마도이 당신이

Core.sql 
Widget-Map.sql 
Widget-HR.sql 
etc.. 

내가 생각이 줄을 수정입니다 가질 수 있도록 모든 변경 스크립트를 척하는 것입니다 파악?

나는 레드 게이트 SQL을 비교해 보았다. 나는 그것을 좋아하지만, 여전히 여러 데이터베이스 상황에서는 도움이되지 않는다.

그래서 스키마를 업데이트하기위한 도구를 만들면 좋을까요?

그렇다면 조언, 팁, 링크. 이 일을 좀 덜 어렵게 만드는 것은 매우 감사 할 것입니다.

이미 읽고 몇 가지 소스, 구조 업그레이드를 않는 ORM의 Migrations for Java

http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

+0

Mitch의 제안에서 데이터베이스 프로젝트를 검토 중이므로 http://blogs.msdn.com/b/jenss/archive/2010/08/21/alm-visual-studio-database-projects를 읽습니다. -guided-out-in-the-wild.aspx 및 진행 상황에 대한 업데이트 – AnonUser

+0

Gert Drapers 블로그에는 GDR R2 정보가 많이 있습니다. http://blogs.msdn.com/b/gertd/ –

+0

@MitchWheat 감사합니다. 훌륭한 링크. Team Foundation Server를 설치하고 현재 데이터베이스 스키마를 데이터베이스 프로젝트로 변환 중이므로 매우 쉽게 만들 수 있다고 생각합니다. 다시 한 번 감사드립니다 – AnonUser

답변

1

외부, 방법은 분해, 일체의 지원을 주셔서 대단히 감사합니다 다음과 같이 변경합니다.

  • 올바른 것으로 간주되는 일부 DB와 비교하십시오. 개인적으로 나는 코드의 배포에 묶여있는 업그레이드를 많이하고 DB 사양을 어떻게 든 코드에 포함 시키므로이 위험을 고려합니다. 이것은 내 개인적인 취향입니다.

  • 업그레이드 스크립트. 가장 인기가 있었지만, ORM이 더 많은 보류를하고있는 상황에서 지나가고있는 것처럼 보입니다. 기본적으로 특정 릴리즈의 경우 처음부터 빌드하는 "설치"스크립트와 "From_x.y.z_to_a.b.c"모든 종류의 증분을 처리하는 두 번째 스크립트 세트가 있습니다. 프로 : 이해하기 쉽습니다. 단점 : 두 번째 코드, 17 번째 스크립트가 실패 할 때 매우 중요한 PITA.

  • 사전 또는 스키마 기반 업그레이드.아마 나 자신의 외부에서 가장 인기가없는 것, 나는 그것을하는 사람이 아무도 없다는 것을 알고있다. (OK, 아마도 과장이다.) PHP Doctrine은 이와 비슷한 것을 가지고있다. 아이디어는 스키마를 기존 데이터베이스와 비교하고 스키마를 최신으로 가져 오는 도구이다. 프로 : 단일 스키마 파일 (또는 파일), 코드 배증, 업그레이드를 보장하는 가장 좋은 방법은 가장 짧은 시간에 예상하는 데이터베이스를 생성합니다. (거의) 아무도 그것을하지 않으며 도구가 부족합니다.

  • 이 작업을 수행하는 도구가있어서 MS SQL에서 작업해야하지만 지금은 Postgres에서만 테스트 중이므로 시간을 낭비하고 싶지 않은 링크를 게시하지 않겠습니다.

    +0

    Visula Studio GDR 데이터베이스 프로젝트는 (3)과 유사하지만 스키마가 소스 제어하에 있다는 점에서 유사합니다. GDR 프로젝트는 까다 롭지 만 잘 작동합니다. –

    +0

    @Mitch 당신의 사전/스키마가 물론 소스 제어하에 있다고 지적 했어야합니다. –

    0

    이론적으로 각 diff에 대해 별도의 분기를 만들 수 있습니다 소스 컨트롤의 다른 스키마 버전과 업데이트해야하는 경우 소스 컨트롤에서 SQL Compare Pro 명령 줄 방향을 사용하여 업데이트하십시오. 이 경우 SQL Source Control을 사용하여 SQL Compare Pro에서 인식 할 수있는 소스 제어 가능 형식으로 스키마를 저장해야합니다.

    이 문제를 해결하거나 설정하는 데 도움이 필요하면 [email protected]으로 문의하십시오.

    +0

    응답 해 주셔서 감사합니다. RedGate의 도구 중 일부를 사용할 계획이지만, 2010 년 새로운 것을 들여다보고 있습니다. 데이터베이스 프로젝트를 사용하면 Visual Studio 내에서 소스 제어 데이터베이스 스키마를 많은 번거 로움없이 사용할 수 있습니다. – AnonUser

    관련 문제