Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Réduire au minimum les temps d'arrêt des tables en renommant l'ancienne table, puis en remplissant une nouvelle version ?

Utilisez l'indirection pour éviter de manipuler les tables directement :

  • Avoir 3 tables :Client1, Client2, Client3 avec tous les index, contraintes et déclencheurs, etc.
  • Utilisez synonymes pour masquer la table réelle, par exemple Client, ClientOld, ClientToLoad
  • Pour générer la nouvelle table, vous tronquez/écrivez dans "ClientToLoad"
  • Ensuite, vous DROP et CREATE les synonymes dans une transaction afin que
    • Client -> ce qui était ClientToLoad
    • ClientOld -> qu'est-ce que Client
    • ClientToLoad -> ce qui était ClientOld

Vous pouvez utiliser SELECT base_object_name FROM sys.synonyms WHERE name = 'Client' pour déterminer quelle est l'indirection actuelle

Cela fonctionne sur toutes les éditions de SQL Server :l'autre méthode est la "commutation de partition" qui nécessite une édition d'entreprise