2009-05-12 3 views
1

사람들은 데이터베이스 구조 업데이트 관리를 어떻게 권장합니까?SQL 구조 업데이트를 관리하는 방법

기존 테이블이 변경되고 새로운 테이블이 추가되어야하는 새로운 기능이 추가되었습니다.

좋은 소프트웨어가 있습니까? 아니면 ALTER 타입 진술을 작성한 것입니까?

+0

, 그것은 필자가 직장에서 사람을 대신 물어 –

답변

4

두 스키마 (RedGate SQL Compare) 간의 차이점을 분석하고 필요한 변경 스크립트를 생성 할 수있는 소프트웨어가 있지만 필자는 자체 데이터베이스 변경 문을 작성하는 것을 선호합니다. 그렇게하면, 나는 변화되고있는 것을 완전히 통제 할 수 있습니다. 스크립트를 실행하고 데이터베이스를 업데이트 할 수 있도록 각 데이터베이스 버전에 대한 변경 사항을 Install.sql 스크립트 또는 그와 비슷한 것으로 롤백하십시오.

이렇게하면 dev에서 테스트로 변경 사항을 쉽게 이동할 수 있습니다.

은 참조 : 당신은 모든 ALTER 문을 작성 손을 원하지 않는 경우 Deploying SQL Server Databases from Test to Live

+0

DB를, 등, 당신이 스크립트를 생성 할 수있는 방법에 영향을 수정합니다 :

다음 ISA 좋은 책과 함께 시작합니다 - 레드 게이트 SQL 비교의 프로 버전은 좋고 저렴한 것 같습니다. –

+0

동일한 데이터베이스 버전간에 데이터베이스 구조를 관리하는 것에 대해 이야기하고 있다면 SQL Compare는 훌륭합니다. 직장에서 사용하기 때문에 시간이 많이 절약됩니다. – Nick

+0

+1 유연하고 효율적인 – Andomar

1

는 SQL Server Management Studio의 물건의이 유형의 모든 처리 할 수있는 GUI를 가지고있다. GUI를 사용하여 생성 된 스크립트를보고 빠른 하이브리드 접근 방식을 원할 경우 거기에서부터 이동할 수 있습니다.

+0

Linux 또는 Mac의 경우는 무엇입니까? 나는 기술 중립적 방법으로 질문을 시도했지만 우리의 요구 사항은 디바이스에 맥과 우분투는 데스크탑 서버와의 LAMP 스택은 –

0

응용 프로그램의 범위 나 개발자 수 등은 언급하지 않으므로 권장 사항을 작성하는 것이 조금 어렵습니다. 개발이 동시에 여러 프로젝트와 여러 개발자로 구성하고 생산에 개발에서 복사하는 경우, 나는 다음과 같은 일을 추천 할 것입니다 : DEV, 품질 보증, 생산 :

  • 3 "지역"을 구현한다.
  • 변경은 품질 보증에서 스크립트를 실행, 준비 및 테스트를 할 때,이
  • 스크립트를 확인하고 절차
  • 를 설치합니다 모든 객체에 변경 사항을 추적하기 위해 CVS 같은 것을 사용, 스크립트의 모든 변경 사항을 작성, 개발의 모든 변경 사항을 개발
  • 준비가되면 당신의 스크립트를 실행하고

생산에 설치 과정을 참고 : 품질 보증은 최종 생산이 설치 기다리고 적용 변경을 제외하고, 생산과 거의 동일하다. dev에는 진행중인 작업, 추가 디버그 쓰레기 등이 포함됩니다. 정기적으로 프로덕션 백업을 qa 및 dev에 복원하여 다시 동기화 할 수 있습니다 (모든 개발자가 이에 대해 잘 알고 있는지 확인하고 그에 따라 계획하십시오). 개발자)는 (생산 대 qa) 대 시간 차이가 발생하기 시작합니다.

+0

우리의 설정은 다음과 같습니다 테스트 서버 - 5 MySQL의 php5.2, 아파치 생산 서버 - mysql 5, php5.2, apache2 phpMyAdmin도 실행 중입니다. –

+0

SQL Server 참조를 제거하고 질문에 "mysql"태그를 추가했습니다. 얼마나 많은 개발자가, 만약 당신이 단지 그것이 10 명이 아닌 경우. 1 년에 한 번만 표를 변경하면 매주 표 변경과 다릅니다. –

+0

우리 팀 중 하나가 이렇게 작동하며 엉망입니다. 변경 사항이 너무 오래 걸려 중복되기 시작합니다. CVS에 각 객체를 저장하면 변경 사항이 많은 파일에 분산되어 배포 시간이 오래 걸리며 오류가 발생하기 쉽습니다. Devs는 QA가 승인 한 순간에 최종 사용자가 경험하지 못한 제품을 제공하면서 질문을 잊어 버립니다. 귀하의 마일리지가 다를 수 있습니다; 나는 그것이 당신의 장소에서 더 잘 작동하기를 바랍니다 :) – Andomar

1

나는 하나의 것을 추가 할 것입니다. 테이블 구조를 변경하기 위해 alter table 문을 작성하는 것만으로는 충분하지 않습니다. 테이블 구조를 변경하는 경우 다른 뷰, 함수, 테이블, 저장된 procs, 트리거, SSIS (DTS) 패키지 (SQL Server 용) 및 응용 프로그램의 동적 코드 변경 사항의 영향을받습니다. 다른 오브젝트에 영향을 줄 수 있는지 확실하지 않으면 테이블을 변경할 준비가되지 않은 것입니다. 나는 누군가가 그 구조를 사용하는 것을 고려하지 않고 테이블 구조를 변경했기 때문에 비즈니스에 중요한 기능이 너무 많이 중단되는 것을 보았습니다. 데이터베이스 구조 변경을 고려 중이라면 그렇게하기 전에 데이터베이스 리팩토링에 대해 읽어 보시기 바랍니다. 가 http://www.amazon.com/Refactoring-Databases-Evolutionary-Addison-Wesley-Signature/dp/0321293533

당신이 질문에 MySQL을 언급해야
관련 문제