db를 자동으로 업데이트하는 대신 프로덕션 환경을 위한 유창한 n-hibernate를 사용하여 SQL 스크립트를 생성하세요.

StackOverflow https://stackoverflow.com//questions/22078299

문제

다양한 문서를 살펴봤지만 이 문제를 해결하는 내용은 찾지 못했습니다.향후 프로젝트에서는 Fluentmigrator를 사용하려고 합니다. 단, 스테이징/프로덕션 실무에서는 dba를 통해 스키마 업데이트를 수행해야 합니다.테스트, 개발, 로컬 등 다른 환경에서도 내가 원하는 대로 할 수 있습니다.

어쨌든 변경을 수행하기 위해 스크립트를 작성해야 한다면 도구의 목적이 완전히 무용지물이 됩니다.그러나 나에게 이런 생각이 들었습니다. 그렇지 않으면 어떻게 될까요?그래서 내 질문은 이렇습니다.실제로 트랜잭션을 실행하는 대신 유창한 마이그레이션이 SQL 스크립트를 파일에 내뱉는 것이 가능합니까?

실험에서 저는 기본 프로젝트와 동일한 DAL 어셈블리를 사용하고 마이그레이션 로직을 활용하는 콘솔 앱을 만들었습니다. 따라서 콘솔 앱을 실행할 때마다 처음부터 또는 선택에 따라 가장 가까운 지점에서 db가 업데이트됩니다. .우리는 TeamCity를 사용하므로 스키마를 직접 업데이트하는 환경에서 DBA를 위한 빌드 프로세스의 한 단계로 앱을 실행하고 폴더에 스크립트(아티팩트)를 배치하는 것이 멋질 수 있다고 생각했습니다.

도움이 되었습니까?

해결책

그만큼 FluentMigrator 명령줄 실행기 다음을 사용하는 경우 데이터베이스에 변경 사항을 적용하지 않고 SQL 스크립트를 생성합니다.

  • --preview=true
  • --output=true
  • --outputFilename=output1.sql

그리고, 설치하면 FluentMigrator.Tools 패키지 여기에 덧붙여 FluentMigrator 패키지, 을 사용하면 마이그레이션 프로젝트의 빌드 출력 디렉터리(Migrate.exe).

메모:생성된 스크립트에는 FluentMigrator 버전 테이블에 대한 삽입이 포함됩니다.

다른 팁

After reading Command Line Runner Options I'd use --verbose=true to output the sql script and --output to save it to a file. There seems to be no 'dry run' option however - you'll need to run the migration in some preproduction environment to obtain the script.

Give it a shot as I've admittedly never tried it.

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