Eu tenho trabalhado e desativado o SQL Server desde o SQL Server 6.5, o antigo conselho que ainda soa na minha cabeça é nunca fazer uma atualização no local.
Atualmente, estou atualizando meus sistemas DEV e TEST 2008 R2 para o SQL Server 2012 e preciso usar o mesmo hardware. O pensamento de não precisar restaurar minha configuração do Reporting Services é muito atraente e estou realmente contra o tempo da parede. Não há serviços de análise envolvidos ou algo incomum ou fora do padrão - apenas o mecanismo de banco de dados e os serviços de relatório estão instalados.
Alguém já teve problemas sérios com atualizações no local? Ou devo reavaliar minha posição sobre atualizações no local?
sql-server
sql-server-2012
migration
upgrade
ssrs
Mercadorias estragadas
fonte
fonte
Respostas:
Resposta muito curta - o local está ok. Você pode revisar sua configuração posteriormente e implementar as práticas recomendadas para o SQL Server 2012.
Uma resposta mais longa sobre atualizações / migrações do SQL Server
Portanto, isso é uma questão de opinião e não há uma resposta necessariamente errada ou correta, mas eu prefiro as atualizações do estilo de migração em vez do local por várias razões. Dito isto - alguns de meus clientes, por várias razões, não tiveram escolha a não ser fazer um local e, realmente, desde o SQL Server 2005, as atualizações locais não foram tão ruins quanto costumavam ser.
Por que prefiro uma migração a uma atualização no local
Mente-lhe Eu não estou dizendo que você tem de fazer isso como uma migração. O Local funciona e funciona bem se você não planeja comprar um novo hardware em seu orçamento e não pode fazer isso para esta atualização. O suporte no processo de atualização é muito melhor do que era nos 6,5 dias, para que você não se coloque em uma posição ruim fazendo isso.
Se você planeja executar no local para desenvolvimento / teste, mas deseja fazer uma migração para produção, considere fazer pelo menos uma migração antes da produção. Dessa forma, você pode elaborar sua lista de verificação com antecedência e lidar com possíveis problemas em que não estava pensando.
Anexar / desanexar vs. Backup / restauração para migrações
Se você decidir seguir a abordagem de migração, ainda há mais uma decisão sobre a qual você ainda pode debater e é assim que você move seu banco de dados para o novo ambiente. Você pode desanexar seu banco de dados do servidor antigo e anexá-lo ao novo ou fazer backup e restaurá-lo lá.
Eu prefiro backup / restauração. A maior vantagem que ouvi sobre desanexar / anexar é que ele economiza algum tempo. Para mim, o backup / restauração vence por alguns motivos:
Se você decidir fazer o backup / restauração - isso significa que seu antigo banco de dados de origem ainda estará online. Eu gosto de colocar esse banco de dados offline depois de fazer o backup. Às vezes, dou um passo adiante e coloco toda a instância do SQL offline depois de criar scripts de segurança, trabalhos, servidor vinculado, certificados, configurações de correio do banco de dados e outras informações abrangentes da instância. Isso evita um problema durante o teste, em que alguém diz "Tudo parece ótimo!" apenas para perceber um ou dois dias depois que eles estavam conversando com o banco de dados antigo no servidor antigo. Colocar esses bancos de dados offline ou toda a instância offline permite evitar os falsos positivos e a bagunça que eles fazem.
Como tornar a abordagem de migração mais rápida
Você pode minimizar o tempo de inatividade necessário para a transição de um ambiente antigo para um novo para um ambiente de produção ocupado com pouco tempo de inatividade, utilizando o modelo de recuperação completa. Basicamente - prepare o ambiente para o qual você está migrando restaurando o backup completo mais recente, os backups diferenciais e os backups de log já realizados, especificando
NORECOVERY
- tudo o que você precisará fazer para o corte final é restaurar os backups de log que ainda não foram restaurados e o backup de log final que você deseja restaurar, especificandoWITH RECOVERY
. Dessa forma, para um banco de dados grande, a janela real de tempo de inatividade de transição pode ser drasticamente minimizada pagando pelo custo das restaurações completas, diferenciais e da maioria dos logs antes da janela de tempo de inatividade. Obrigado ao Tao por apontar isso nos comentários!Como tornar a atualização no local mais segura
Algumas ações que você pode fazer para melhorar sua experiência e resultados ao escolher a abordagem no local.
A importância das listas de verificação de atualização ou migração
Se você decidir fazer uma atualização (no local ou na migração), considere seriamente criar uma lista de verificação e usá-la em cada ambiente. Você deve incluir várias coisas nesta lista de verificação, das quais não menos importante:
Depois, peça à pessoa que fará a atualização da produção que siga a lista de verificação em algum ambiente que não seja a produção - especialmente aquele que fecha se assemelha à produção, se possível ("Sul de prod", como eu digo ...) e anote quaisquer problemas ou pontos onde eles tiveram que desviar da lista de verificação ou improvisar devido à falta dela. Em seguida, junte as alterações e divirta-se com sua alteração na produção.
Não posso enfatizar demais a importância de testar completamente após a migração ou atualização e antes da sua migração o suficiente. Tomar uma decisão de reversão no meio de uma atualização deve ser fácil - especialmente durante uma migração. Se houver algo desconfortável, faça a reversão e descubra se você não pode solucionar problemas de maneira eficaz e confiável no calor da migração. Uma vez que você vive neste novo ambiente e os usuários se conectam, a reversão se torna uma tarefa difícil. Você não pode restaurar um banco de dados do SQL Server para uma versão anterior. Isso significa trabalho manual e migrações de dados. Eu sempre espero algumas semanas para matar o ambiente antigo, mas você deve fazer tudo o que puder para evitar a necessidade desse ambiente antigo, encontrando todos os seus problemas antes que seus usuários ativos toquem o novo ambiente. De preferência, antes mesmo de iniciar a atualização / migração.
Nota rápida sobre a migração / atualização do SQL Server Reporting Services A migração de uma instalação do SSRS não é uma tarefa hercúlea que muitos acham que é. Este artigo on-line do technet / books é realmente bastante útil . Uma das advertências mais importantes desse artigo é "Fazer backup das chaves de criptografia", especialmente se você tiver muitas informações confidenciais salvas, como endereços de email de destinatários de email de relatório agendado, informações de conexão para várias conexões etc. posso perguntar a um de meus clientes há algum tempo o quanto isso é importante. Eles sabem porque eu estraguei esse passo e passei bastante tempo modificando agendas de relatórios e permissões de cadeia de conexão.
fonte
Na minha experiência, o mesmo processo de tomada de decisão deve ser feito como antes. AFAIK, não houve nenhum 'trocador de mundo' com a instalação do SQL Server, no próprio produto MS SQL Server, e os possíveis problemas que você tem ao implantar software com milhões de linhas de código. Algo ruim pode acontecer e agora você está preso sem a opção 'ROLLBACK'.
No entanto, você tem outras alternativas em vigor. Você pode considerar fazer uma captura instantânea do sistema, restaurar em outro lugar, executar a atualização e ver o que acontece. Este teste deve proporcionar muito conforto, mas não garante absolutamente que não haverá problemas na caixa do produto. No entanto, esta é uma opção que não estava disponível no SQL 6.5 dias.
Eu apenas assumiria o pior cenário possível. Você faz uma atualização no local e ela falha miseravelmente. Você precisa se recuperar disso dentro do seu RTO e RCO. A empresa entende os riscos e você tem planos para mitigá-los?
Se o negócio não está bem com isso, então não faça isso seria o meu conselho.
fonte
Se você tiver seus servidores em execução em um ambiente virtual, poderá executar uma captura instantânea em um clone e aplicar a atualização local e testar a instância para verificar se a atualização foi bem-sucedida. Se funcionar, você pode aplicar a captura instantânea e tornar o clone o servidor de produção. Se o resultado for ruim, você poderá excluir o instantâneo e voltar à imagem de pré-atualização para tentar novamente ou excluir o clone e fazer uma migração completa.
fonte
Devido a um grande investimento em hardware, fomos obrigados a atualizar apenas o SO, mantendo a versão atual do SQL Server (2012, 3 servidores, 22 instâncias, ~ 300 bancos de dados). Nenhuma configuração complexa, como espelhamento, etc.
Este exemplo não corresponde exatamente à pergunta, pois o SQL Server não está sendo atualizado. Eu acho que essa ainda é uma boa resposta, porque as etapas mostradas seriam realmente mais simples do que uma verdadeira migração no local.
Visão geral: Uma unidade externa foi conectada para fazer backups completos, principalmente como precaução. Somente o modelo e o msdb serão realmente restaurados a partir da unidade externa. Os ldf / mdf foram deixados no lugar para desanexar / anexar. Algumas contas locais foram referenciadas nos bancos de dados. Depois de recriadas no sistema operacional, as referências no banco de dados foram recriadas (pois os SIDs podem mudar).
Então, aqui estavam as etapas que funcionaram para nós:
1) Anote as configurações no nível do servidor que serão restauradas nas etapas 12 (Funções do servidor) e 18 a 23.
2) Aplique o patch do SQL Server 2012 ao SP3 (consistência necessária se desejarmos restaurar quaisquer dbs do sistema).
3) Verifique se as versões correspondem em cada instância. "Selecione @@ versão"
4) Gere esses 6 scripts executando este script. O Redgate SQL Multiscript economiza bastante tempo se houver muitas instâncias (ajuste Ferramentas -> Opções => Comprimento da linha ao máximo (8192) e use a saída de texto).
Vincular novamente os usuários aos logins
5) Execute o script para fazer backup de todos os bancos de dados, incluindo o sistema (mestre, msdb, modelo) na unidade externa.
6) Executar script para desanexar todos os bancos de dados
7) O drive C será reformatado. Preservar os LDF / MDF, se não estiverem em C.
8) Windows Server 2012 está instalado em C
9) Mova o LDF / MDF para os arquivos originais do sistema, se eles não estiverem na unidade C.
10) O SQL Server 2012 será reinstalado e corrigido no SP3 Recrie contas de usuário / grupo do sistema
11) Faça backup dos bancos de dados do sistema em um novo local ou nome de arquivo (cuidado para não sobrescrever os originais!).
12) Execute o snippet de recriação de funções. Algo como:
13) Execute recriar script de login (não faz nada se os logons foram restaurados)
14) Pare o SQL AGENT.
(Poderia restaurar o Mestre aqui, nós nos acovardamos).
15) Anexe mdf / ldf usando o script acima. uma. Se falhar, restaure manualmente do bak usando o script acima.
16) Tentativa de restauração do modelo
17) Verifique se o SQL Agent está parado. Restaurar MSDB (link) a. Se falhar, é necessário recriar trabalhos + plano de manutenção + configuração de correio + operadores
18) Script Open User To Login ...
19) Habilite o service broker para corresponder ao valor original SELECT name, is_broker_enabled FROM sys.databases;
20) Inicie o SQL Agent
21) Defina o limite do paralelismo para o valor original
22) Ajuste as configurações do banco de dados aos seus valores originais:
23) Verifique a propriedade do trabalho:
Se a versão do SQL Server também tivesse sido atualizada, não acredito que os bancos de dados modelo e msdb pudessem ter sido restaurados para que os trabalhos fossem perdidos devido a https://support.microsoft.com/en-us/kb/264474
O que está a faltar:
fonte
Nada está errado com nenhuma das abordagens em si - eu fiz as duas coisas e ambos os resultados são normalmente bons.
Se houver um problema com a abordagem de migração, não é técnico: é preguiça. Muitas vezes, acho que o motivo pelo qual uma empresa ainda não foi totalmente para a versão xxxx é porque eles escolheram uma migração automática e nunca se deram ao trabalho de se mover completamente. Agora eles têm dois ou mais conjuntos de servidores em vez de um.
fonte