asp.net - 쿼리 - mssql 이중화




SQL Server:스키마 변경 내용을 다른 데이터베이스에 복제 (4)

두 개의 동일한 데이터베이스가 필요한 ASP.NET 웹 API의 요구 사항을 처리하고 있습니다.

동일한 서버에 두 개의 동일한 데이터베이스를 만들었습니다. 하나는 개발 용이고 다른 하나는 테스트 용입니다.

다른 데이터베이스에서 다른 데이터베이스로 즉시 변경하는 저장 프로 시저, 뷰 및 테이블과 같은 모든 스키마를 복제하려고합니다.

필자는 데이터 복제에 대해 걱정할 필요가 없습니다. 두 데이터베이스가 정확히 동일한 스키마 정의를 갖고 있는지 확인해야합니다.

한 데이터베이스에서 스키마를 생성하고 다른 스키마를 주기적으로 업데이트하려고했습니다. 하지만 지금은 변경 사항을 즉시 다른 데이터베이스로 복제하려고합니다. 따라서 개발 데이터베이스에서 저장 프로 시저 또는 뷰를 업데이트 할 때 동일한 변경 사항이 테스트 데이터베이스에도 즉시 적용되어야합니다.

가능한지 또는이를 달성하기위한 또 다른 접근법이 있는지 말해달라고 요청합니다.


Microsoft의 특별 솔루션을 사용하는 것이 좋습니다. Visual Studio 용 SQL Server 데이터 도구 . 이것은 Visual Studio 템플릿의 새로운 유형의 프로젝트에 추가되며 무료입니다 (이미 설치되어있을 수도 있습니다).

이 유형의 프로젝트에는 모든 DB 스키마와 모든 프로 시저 / 함수 / 트리거가 포함됩니다.

프로젝트이므로 솔루션의 일부가 될 수 있으며 버전 제어 시스템 (Git, SNV, TFS 등)에 모든 DB 기록 변경 사항을 저장할 수 있습니다.

2 차 DB에 변경 사항을 적용하려면 여러 가지 방법이 있습니다. .dacpac 파일 접근 방식을 사용할 수 있습니다. 아니면 단지 2 게시 프로필. 또는 소스 비교 도구를 사용하십시오.

주요 아이디어는이 프로젝트에서 먼저 변경 한 다음 실제 DB에 적용하는 것입니다.

그리고 cource의 경우 서버 게시를 빌드하면이 솔루션의 일부가 빌드 프로세스의 일부가 될 수 있으며 2 개의 DB에 변경 사항을 손쉽게 적용 할 수 있습니다.


가능한 (기본) 솔루션 중 하나는 트랜잭션 복제를 활성화하는 것입니다 (DDL 변경에만 해당)

https://docs.microsoft.com/en-us/sql/relational-databases/replication/publish/make-schema-changes-on-publication-databases

나중에 여러 데이터베이스 (구독자)를 가지며 구독자를 다른 서버로 이동할 수 있습니다 (필요한 경우).

다른 솔루션은 PS + ApexSQL Diff와 같은 타사 도구를 사용하는 것입니다. https://solutioncenter.apexsql.com/how-to-automatically-keep-two-sql-server-database-schemas-in-sync/

또는 SQL 델타

또는 SQL Compare (Red Gate)


내 지식이 없으면 변경 사항을 적용하는 본질에 대한 트리거가 실제로 마음에 들지 않으므로 프로 시저가 각 데이터베이스를 초기화하도록 제안합니다. 따라서 스키마에 새로운 코드를 포함 시키면 초기화 프로세스에도 포함시켜야합니다. 복제는 항상이 프로세스로 시작되어야합니다.

두 DB에서 코드를 변경합니까? 마스터 - 슬레이브 관계가있는 경우 슬레이브 DB 만 초기화하면됩니다. 그렇지 않으면 master-master의 경우 어떤 종류의 버전 관리를 유지해야합니다.


한 데이터베이스에서 수행 된 변경 사항을 다른 데이터베이스에 자동으로 동기화하는 대신 데이터베이스에 대해 일종의 소스 제어를 사용하고 수동으로 (또는 자동으로) 두 환경에 변경 사항을 배포하십시오.

소스 컨트롤은 모든 종류의 긍정적 인 영향을 미치며 어쨌든 습관이되어야합니다. 데이터베이스에도.

Liquibase는 무료 오픈 소스이며 매우 유연하기 때문에 사용하는 것이 좋습니다.







database-replication