문제

내 컴퓨터에 로컬로 호스팅되는 웹 사이트와 해당 웹 사이트의 데이터베이스(개발용)와 다른 데이터베이스가 호스팅(프로덕션용) 있다고 가정해 보겠습니다. 즉, 먼저 dev db에서 변경을 수행한 다음 prod에서 변경을 수행합니다. DB.

로컬 데이터베이스에서 수행한 변경 사항을 호스팅된 데이터베이스로 전송하는 가장 좋은 방법은 무엇입니까?

중요한 경우 MS SQL Server(2008)를 사용하고 있습니다.

도움이 되었습니까?

해결책

Visual Studio 및 SQL Server를 사용 하여이 작업을 수행하는 올바른 방법은 데이터베이스 프로젝트 웹 앱 솔루션에. 데이터베이스 프로젝트에는 필요한 모든 테이블, 프로 시저 사용자 및 역할과 함께 새 서버에서 전체 데이터베이스를 완전히 재현 할 수있는 SQL 파일이 있어야합니다.

이렇게하면 나머지 코드의 모든 코드에 대한 소스 컨트롤에 포함되어 있습니다.

이있다 변화 데이터베이스 프로젝트의 하위 폴더는 다음 버전에 대한 새로운 변경 또는 추가를 데이터베이스에 적용하는 SQL 파일을 넣습니다.

파일의 SQL은 이미 업데이트 된 데이터베이스에서 오류없이 여러 번 안전하게 실행할 수 있도록 적절한 "존재하는 경우"블록으로 작성해야합니다.

일반적으로 데이터베이스에서 직접 변경해서는 안됩니다. 대신 프로젝트에서 SQL 스크립트를 수정하고 데이터베이스에 적용하여 소스 코드 (SQL 파일)가 항상 최신 상태인지 확인하십시오.

다른 팁

우리는 (Ruby On) Rails World에서 "마이그레이션"을 작성하여 각 지점에서 DB 구조에 대한 변경 사항을 포착합니다. 이들은 마이그레이션 도구 (레이크를위한 작업)와 함께 실행되며 DB 테이블에도 기록되어 특정 마이그레이션이 실행되었는지 여부를 알 수 있습니다.

Dev 플랫폼 (.NET?)을 위해 이와 같은 구조를 만들 수 있지만,이 질문에 대한 다른 답변에서 사람들은 개발 플랫폼 또는 특정 DB에서 데이터베이스 버전을 처리 할 수있는 도구를 제안 할 것이라고 생각합니다.

나는 이것들 중 하나를 모른다. 그러나이 목록을 확인하십시오. 나는 거기에 많은 돈을 지불하는 것을 볼 수 있지만, 무료가 있어야합니다. 또한 이것 좀 봐.

개발자가 변경 사항을 테스트/검증했을 때 변경 스크립트를 통해 변경 사항을 마이그레이션합니다. (큰 데이터를 이동하는 예외) 모든 스크립트는 소스 제어 시스템에 저장됩니다. DBA에 의해 확인할 수 있습니다.

그것은 수동이며 때때로 시간이 많이 걸리지 만 효과적이고 안전하며 통제되는 프로세스입니다.

데이터베이스는 Dev에서 복사하기에는 너무 중요합니다.

이 스크립트를 작성/확인하는 데 도움이되는 도구가 있습니다. 보다 http://www.red-gate.com/ 도구를 사용하여 2 개의 데이터베이스를 비교하여 스크립트를 만들었습니다. 브라이언

변경이 작 으면 때때로 손으로 만듭니다. 더 큰 변화를 위해 사용합니다 레드 게이트의 SQL은 변경 스크립트를 생성하는 것과 비교합니다. 이것들은 QA 환경에서 먼저 손으로 검증되고 실행되어 아무것도 깨지지 않도록합니다. 대규모 변경의 경우 QA와 생산에서 변경하기 전에 특별한 백업을 실행합니다.

우리는 Ron이 제공한 접근 방식을 사용하곤 했습니다.이는 전담 DBA 팀이 있는 대규모 프로젝트에 적합합니다.하지만 DB 전용 코드를 작성하는 전담 개발자가 없다면 이 접근 방식은 시간과 리소스가 많이 소요됨.

RedGate DB 비교를 사용하는 접근 방식도 좋지 않습니다. 여전히 수동 작업이 많기 때문에 실수로 일부 단계를 건너뛸 수 있습니다..

더 나은 것이 필요합니다.이것이 바로 우리가 이 건물을 지은 이유입니다. "Agile DB 재생성/가져오기/역방향/내보내기 도구"이 도구는 무료입니다.

장점:개발자는 선호하는 도구를 사용하여 DEV DB를 개발합니다.그런 다음 DB RIRE를 실행하고 역설계 DB(테이블, 뷰, 저장 프로세스 등)를 만들고 데이터를 XML 파일로 내보냅니다.모든 코드 저장소 시스템에 보관할 수 있는 XML 파일입니다.

그리고 두 번째 단계는 DB RIRE를 한 번 더 실행하여 XML 파일과 Production DB의 구조와 데이터 간의 차이 스크립트를 생성하는 것입니다.

물론 필요한 만큼 반복할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top