Här är något jag gör. Det resulterar inte i noll stillestånd men kan sluta på mindre än en sekund.
Skapa en databas som bara har gränssnittselement till din riktiga databas. I mitt fall innehåller den bara vydefinitioner, och alla användarfrågor går igenom den här databasen.
Skapa en ny databas varje natt. När det är klart uppdaterar du vydefinitionerna för att referera till den nya databasen. Jag skulle rekommendera att antingen stänga av användaråtkomst till databasen som innehåller vyerna medan du uppdaterar dem eller ta bort alla vyer och återskapa dem -- detta förhindrar delvis åtkomst till den gamla databasen. Eftersom det går snabbt att skapa vyer bör detta vara en mycket snabb operation.
Vi gör allt detta genom ett jobb. Innan vi ändrar produktionsvyerna testar vi faktiskt skapandet av vyer på en annan databas för att vara säker på att alla fungerar.
Uppenbarligen, om du använder alter view
istället för att kräva konsistens över alla vyer, då finns det ingen stilleståndstid, bara en kort period av inkonsekvens.