Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Tabellenausfallzeiten auf ein Minimum reduzieren, indem Sie die alte Tabelle umbenennen und dann eine neue Version füllen?

Verwenden Sie die Indirektion, um die direkte Manipulation von Tabellen zu vermeiden:

  • Habe 3 Tabellen:Client1, Client2, Client3 mit allen Indizes, Einschränkungen und Triggern usw.
  • Verwenden Sie Synonyme um die reale Tabelle auszublenden, zB Client, ClientOld, ClientToLoad
  • Um die neue Tabelle zu generieren, kürzen/schreiben Sie in "ClientToLoad"
  • Dann löschen und erstellen Sie die Synonyme in einer Transaktion, sodass
    • Client -> was war ClientToLoad
    • ClientOld -> was war Client
    • ClientToLoad -> was war ClientOld

Sie können SELECT base_object_name FROM sys.synonyms WHERE name = 'Client' verwenden herauszufinden, was die aktuelle Indirektion ist

Dies funktioniert auf allen Editionen von SQL Server:Der andere Weg ist "Partitionswechsel", der die Enterprise Edition erfordert