Ao enviar logs entre um banco de dados primário e um banco de dados secundário, o banco de dados secundário precisa ser definido como somente leitura?
Por somente leitura, não estou falando sobre a ideia de apenas ler do banco de dados. Estou falando sobre o banco de dados ter um status específico de somente leitura ou espera/somente leitura.
Não consigo encontrar nada que afirme que isso é necessário na visão geral do envio de logs e em outras páginas relacionadas. Isso está causando um problema, pois não consigo adicionar nenhum índice a um banco de dados somente leitura.
Você não pode alterar o banco de dados secundário de forma alguma.
Isso é normal - o banco de dados secundário deve ser um backup do banco de dados principal, então não é possível adicionar coisas que não estão no banco de dados principal. É por isso que está no modo somente leitura.
Não há problema em usar o banco de dados secundário para relatórios, para reduzir a carga no servidor principal (consulte Usando servidores secundários para processamento de consultas ).
Mas se você precisar de algum índice especial para isso, terá que adicioná-los ao banco de dados primário e esperar até que sejam enviados para o banco de dados secundário.
Como jchelad já disse em sua resposta, uma desvantagem de usar o banco de dados secundário para relatórios é que os usuários são desconectados sempre que um backup de log é restaurado.
É possível alterar isso, para que a restauração seja pausada até que ninguém esteja conectado ao banco de dados.
Citação do link acima:
Mas eu não recomendaria usar a segunda opção.
Estamos usando logshipping no trabalho e estamos usando o banco de dados secundário para geração de relatórios.
Decidimos escolher a primeira opção (os usuários são desconectados quando um backup é restaurado) porque ter um backup é mais importante do que poder executar consultas o tempo todo.
Não gostamos da segunda opção (restaurar apenas se ninguém estiver conectado ao banco de dados) porque caso o servidor principal morra, não queremos descobrir que o banco de dados secundário não foi restaurado nas últimas horas porque os vendedores fizeram consultas o dia todo.
Nós "educamos" nossos usuários de relatórios que há um curto período de tempo a cada 15 minutos em que eles não podem executar consultas e eles aceitam isso.
(a alternativa seria executar as consultas em uma cópia do banco de dados principal de ontem à noite, mas eles preferem os dados de hoje, portanto, precisam conviver com o "intervalo de 15 minutos")
O banco de dados secundário contém a cópia de espera passiva do banco de dados primário. O banco de dados secundário pode estar no estado RECOVERING ou STANDBY, o que deixa o banco de dados disponível para acesso somente leitura limitado e também durante o intervalo entre as tarefas de restauração. Espero que isto seja o que você estava procurando