Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Reduzir o tempo de inatividade da tabela ao mínimo renomeando a tabela antiga e, em seguida, preenchendo uma nova versão?


Use a indireção para evitar a manipulação direta de tabelas:
  • Tem 3 tabelas:Client1, Client2, Client3 com todos os índices, restrições e gatilhos etc
  • Use sinônimos para ocultar a tabela real, por exemplo, Client, ClientOld, ClientToLoad
  • Para gerar a nova tabela, trunque/grave em "ClientToLoad"
  • Então você DROP e CREATE os sinônimos em uma transação para que
    • Cliente -> o que era ClientToLoad
    • ClientOld -> o que era Cliente
    • ClientToLoad -> o que era ClientOld

Você pode usar SELECT base_object_name FROM sys.synonyms WHERE name = 'Client' para descobrir qual é a direção indireta atual

Isso funciona em todas as edições do SQL Server:a outra maneira é "comutação de partição" que requer edição corporativa