2010-12-28 4 views
2

대개 자산 임대를 관리하는 데이터베이스의 프런트 엔드 인 C# 응용 프로그램이 있습니다. 그러나 데이터베이스는 소프트웨어와 함께 발전하고 때로는 업데이트해야합니다.설치 중 데이터베이스 업데이트

일련의 SQL 파일과 msi를 배포하는 대신 설치 프로그램에서 데이터베이스를 업데이트하고 싶습니다. 필자는이 프로그램의 출시에 대해 생각해 봤지만 두 사람이 동시에 프로그램을 시작하면 재미있는 일이 발생할 수 있습니다. 이 프로그램은 단일 서버에 설치 한 다음 내 여러 사람을 원격으로 실행하므로 설치 프로그램에서 업데이트를 수행하면이 사람이 생기지 않습니다.

프로그램 설치 중에 어떻게 데이터베이스를 업데이트 할 수 있습니까?

답변

0

최종 사용자 설치로 프로덕션 데이터베이스를 업데이트하면 위험한 것으로 나타날 수 있습니다. 설치되지 않을 경우

  1. , 당신은 당신이 과정을 걸을 수 있도록 설치를 위해 사용자에게 연락하는 고객을 지시 할 수 있습니다 : 여기에 몇 가지 옵션이 있습니다.

  2. 향후 수정 버전에서는 데이터베이스에 특수 테이블을 포함하십시오. 설치가 시작되면 해당 테이블에 업그레이드가 진행 중임을 나타내는 레코드를 작성하십시오. 설치가 실행되는 동안 클라이언트의 연결을 허용하지 마십시오.

  3. 기존 프로덕션 데이터베이스를 덮어 쓰지 마십시오. 대신 스크립트를 통해 새 데이터베이스를 서버에 복원 한 다음 SSIS 프로세스를 사용하여 이전 버전 데이터베이스의 데이터를 새 데이터베이스로 이동하십시오. 이는 프로덕션 데이터베이스를 손상시킬 수있는 설치 실패로부터 보호하기 위해 관계없이 좋은 아이디어입니다.

+0

SSIS 란 무엇입니까? – Malfist

+0

http://en.wikipedia.org/wiki/SQL_Server_Integration_Services – Chad

0

비슷한 상황에 직면 한 상속 된 응용 프로그램을 기억합니다.이 응용 프로그램을 작성한 프로그래머는 데이터베이스의 두 필드에서 키를 입력합니다. 하나는 설치 관리자가 실행되기 전에 현재 버전 번호가 버전 번호를 확인합니다. 데이터베이스가 설치 프로그램이 시도한 것보다 높은 버전을 가지고있었습니다. 설치가 중단되었습니다. 둘째, 버전/빌드를 저장 한 동일한 테이블에서 다른 열이 데이터베이스의 상태 (예 : 운영/업그레이드 프로세스 등)를 저장 했으므로 버전 # 설치가 이미 진행 중이면 두 번째로 실행 된 설치 프로그램이 중단됩니다. 매우 긴밀한 동시 시작의 경우에도 설치 관리자 중 하나가 먼저 잠금을 획득합니다.

편집 : 중단 등으로 인해 업그레이드의 db 부분이 실행되지 않습니다.

관련 문제