2

저는 C# 프로그래밍에 익숙하지 않으며 가장 최근에 Ruby on Rails로 작업하여 왔습니다. RoR에서 필자는 데이터베이스의 스키마 마이그레이션을 작성하는 데 익숙합니다. 내 C#/SQLServer 프로젝트와 비슷한 것을 할 수 있기를 바란다.VS 2005를 사용하여 SQL Server 스키마를 버전 화하는 방법은 무엇입니까?

VS 2005 도구 집합에 대한 도구가 있습니까?

VS 2005 외부에서 SQL Server와 함께 RoR 마이그레이션을 사용하는 것이 현명합니까? 다른 말로하면 ActiveRecord를 사용하여 모든 스키마 버전 관리를 처리 할 수 ​​있습니다.

다른 도구를 사용하여 C# 및 VS 2005 외부에서 마이그레이션을 처리하는 경우 RoR ActiveRecord : Migration을 사용하는 것이 가장 좋습니다. 또는 더 적합한 방법이 있습니까?

+0

마지막으로 취한 접근 방식을 알고 싶습니다. –

+0

@David 작업 전환이 끝났습니다. 새로운 일은 MySQL을 사용합니다. C#이 기술 스택의 일부가 될 것이기 때문에 이것은 여전히 ​​나에게 관련된 질문입니다. 나는 아직 내 새로운 일에 해결책을 구현하지 않았지만, 지금까지 선두 주자는 liquibase 다. – Mike

답변

0

나는 우리의 데이터베이스 버전을 처리하기위한 DBDeploy.NET 행복이었다. 현재 프로젝트는 C# + SQL 2008을 사용합니다. DBDeploy는 Visual Studio에 통합되어 있지 않지만 IDE의 일부 사용자 지정 외부 도구 항목을 사용하여 만들 수 있다고 가정합니다.

거기에는 확실히 작동하는 다른 도구가 있습니다. Ruby ActiveRecord : Migration에 익숙하지 않은데,이 특별한 도구를 사용해 본 경험이 있다면 왜 그렇게 고집하지 않으시겠습니까? Visual Studio의 데이터베이스 버전 관리/마이그레이션에 관해서는 필자가 Database Professional Edition으로 업그레이드해야한다고 생각합니다. 마지막으로이 버전에 대한 추가 비용을 확인했습니다.

요약하면, 나는 당신이 알고있는 것과 같이 갈 것입니다. DB 버전 관리를위한 대부분의 무료 도구는 현재 IMHO에서 여전히 약간 구워졌습니다. DBDeploy.NET에 대한 자세한 내용은 여기에서 이식 된 원본 프로젝트에서 읽을 수 있습니다. - 또한 DBDeploy 도구는 크로스 플랫폼입니다 (SQL Server뿐만 아니라 많은 DB 시스템 지원). & 오라클) 및 오픈 소스.

0

배포 응용 프로그램에 대한 내 선호하는 접근 방식은 실제로 하나의 내장 된 내부 : Version Control and your Database입니다.

데이터베이스 확장 속성을 사용하여 현재 디스크에 배포 된 스키마 버전을 저장 한 다음 디스크 버전 => 업그레이드 스크립트와 다음 버전 간 맵을 유지 관리하는 내부 업그레이드 배열을 실행합니다. 시작시 앱은 디스크에있는 버전이 현재 앱 버전과 일치 할 때까지 업그레이드 배열의 단계를 실행합니다. 업그레이드는 모든 중간 버전을 통과합니다. 새 사이트 (새 위치)를 배포하면 모든 스키마 버전을 거치며 때로는 더 이상 사용되지 않는 객체를 만들고 삭제할 수 있습니다. 이상하게 보일 수도 있지만 결국 응용 프로그램은 이전에 릴리스 된 버전을 통해 배포 할 수 있습니다. 클라이언트가 3 년 전부터 스키마를 가지고 있다면, 그 내용을 잊어 버린 모든 사람들은 앱을 최신 상태로 유지하는 법을 알고 있습니다.

나는 diffable 비교 도구 (예 : VS DB 프로젝트 통합)를 통해이 방법을 선호합니다. 왜냐하면 테스트가 가능하고 모든 업그레이드에서 수행 된 정확한 단계를 훨씬 잘 제어 할 수 있기 때문입니다. Diff 도구는 테이블 복사 및 이름 바꾸기와 같은 모든 종류의 의심스러운 작업을 수행합니다.이 작업은 + 1TB를 측정하는 배포 (내 응용 프로그램에서 처리해야하는 작업)에 적합합니다.

데이터 크기가 합리적으로 작은 경우 (< 100Gb) diff 기반 도구를 사용하는 것이 좋습니다.이러한 상황에서는 vsdbcmd에 기반한 VS DB 프로젝트 배포가 정상적으로 작동합니다. 또한 배포 대상이 하나의 위치 (즉 대상이 하나 뿐인 웹 응용 프로그램, 웹 사이트 db) 일 경우 이전 버전을 업그레이드 할 수있는 능력이 부족합니다.

관련 문제