내 회사는 대규모 .NET 서비스 지향 솔루션을 제공합니다. 서비스 계층은 수백 개의 테이블과 저장 프로 시저로 구성된 T-SQL 백엔드와 상호 작용합니다. C# 코드는 버전 관리 (SVN)에 있지만 저장 프로 시저와 스키마는 없습니다.소스 제어에서 저장 프로 시저 - 빌드/배포 프로세스 자동화
이 편리한 상단 관리의 많은 로비 후에, 나는 다음과 같은 목표를 달성하기 위해 (존재하지 않는) 빌드/배포 프로세스를 검토 하였다 :
- 장소 스키마 및 소스 제어에서 저장 프로 시저를.
- 빌드/배포 프로세스를 자동화합니다.
내가 this post에서 허용 대답의 전략에 따라 진행 좋아하지만 추가 질문이있을 것입니다 :
내 빌드 서버로 허드슨을 사용하고 싶습니다. 이것은 C#/SQL 솔루션을위한 합리적인 선택입니까? 더 나은 대안을 탐색해야합니까?
소스 제어에서 모든 트리거, 저장 프로 시저, 스키마 등을 가정하고 이들이 개별 파일로 스크립팅되어 있다고 가정 할 때 빌드 간 스크립트를 어떻게 생성합니까? 이게 뭐야? (SQL Server는이 작업을 자동으로 수행하지만 하나의 거대한 스크립트를 생성합니다.)
클라이언트에서 업데이트를 수행하는 워크 플로는 어떻게 생겼습니까? 즉 기존 테이블 데이터를 유지해야합니다. 스키마 변경 사항을 롤백하려면 어떻게합니까?
나는 유일한 프로그래머입니다. 다른 몇 명의 의사 기술 직원이 SQL Management Studio에서 직접 변경을 원합니다. 다른 사람들이이 솔루션을 준수 할 것으로 기대하는 것이 현실적입니까 - 어떻게이를 시행 할 수 있습니까?
도움을 주셔서 감사합니다.
편집 :
불행하게도 우리가 TFS를 사용할 수 없습니다. 하지만 Visual Studio 2008/2010을 데이터베이스 프로젝트 구성 요소와 함께 사용할 수 있습니다. 따라서 스크립트 기반 솔루션을 해킹해야 할 것 같습니다. 모든 제안/업데이트는 높이 평가됩니다.
"SSMS에서 총을 타면서 변경을 수행하는 사용자는 DDL 트리거를 사용하지 못하게 할 수 있습니다. 이벤트 알림을 사용하여 추적하거나 C2 준수 감사를 사용하여 완전히 감사 할 수 있습니다." 또한 소스 컨트롤에있는 내용으로 변경 내용을 덮어 쓸 수 있습니다. 그들이 멈출 때까지 오랫동안 걸리지 않을 것입니다. 또한 그들의 뚜렷한 권리를 가져라. 그래서 prod에 대한 모든 변경은 depolyment 스크립트를 통해 전개되어야한다. – HLGEM
/dbs 사이에 diff를 실행하는 문제는 여러 클라이언트가 자체 저장 프로 시저를 적극적으로 추가하는 것입니다 (때로는 자체 수정도 가능함). 내 자동화 프로세스에서 원샷 업데이트를 수행하고 싶습니다. 그 후에는 아무 것도 보증하지 않습니다. 그래서 나는 MS 툴셋 안에 있어야만하는 것처럼 보입니다. 제가 언급 한 포스트는 이걸 벗어나려고했던 것 같아요. 도와 줘서 고마워. – Alex
개인적으로 저는 http://rusanu.com/2009/05/15/version-control-and-your-database에 설명 된 것처럼 버전이있는 스키마와 업그레이드 스크립트를 사용합니다. 내 제품에서는 SQL 스크립트를 리소스로 응용 프로그램에 추가하고 업그레이드 맵 (즉,이 스크립트를 실행하여 버전 v1.3에서 v1.4로 업그레이드 한 다음 * 해당 스크립트를 업그레이드하도록 실행) v1.4에서 v1.5로, 그 다음에 * 현재까지 스크립트에 이르기까지). vsdbcmd 및 다른 diff 기반 도구가 특히 큰 테이블에 대한 새 버전의 배포를 처리하는 방법을 좋아하지 않기 때문에이 방법을 VS DB 프로젝트보다 선호합니다. –