sql >> Database teknologi >  >> RDS >> Sqlserver

Versionering af SQL Server-database

Martin Fowler skrev min yndlingsartikel om emnet, http://martinfowler.com/articles/evodb.html. Jeg vælger ikke at lægge skemadumps ind under versionskontrol som alumb og andre foreslår, fordi jeg vil have en nem måde at opgradere min produktionsdatabase på.

Til en webapplikation, hvor jeg har en enkelt produktionsdatabaseinstans, bruger jeg to teknikker:

Databaseopgraderingsscripts

En sekvensdatabaseopgraderingsscripts, der indeholder den nødvendige DDL for at flytte skemaet fra version N til N+1. (Disse går i dit versionskontrolsystem.) En _version_history_ tabel, noget i stil med

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

får en ny post hver gang et opgraderingsscript kører, som svarer til den nye version.

Dette sikrer, at det er nemt at se, hvilken version af databaseskemaet der findes, og at databaseopgraderingsscripts kun køres én gang. Igen, disse er ikke database dumps. Hvert script repræsenterer snarere ændringerne nødvendigt at flytte fra en version til den næste. De er det script, du anvender på din produktionsdatabase for at "opgradere" den.

Udviklersandkassesynkronisering

  1. Et script til at sikkerhedskopiere, rense og formindske en produktionsdatabase. Kør dette efter hver opgradering til produktions-DB.
  2. Et script til at gendanne (og justere, om nødvendigt) sikkerhedskopien på en udviklers arbejdsstation. Hver udvikler kører dette script efter hver opgradering til produktions-DB.

En advarsel:Mine automatiserede test kører mod en skemakorrekt, men tom database, så dette råd vil ikke passe perfekt til dine behov.



  1. Er der en Entity Framework 7 Database-First POCO Generator?

  2. Sådan inkluderes ekskluderede rækker i RETURNING from INSERT ... ON CONFLICT

  3. Bedste måde at slette millioner af rækker efter ID

  4. Sådan implementerer du meget tilgængelig PostgreSQL med Single Endpoint til WordPress