Estou mudando de uma instância do SQL Server 2008 R2 para uma instância do SQL Server 2012 em uma caixa separada. Desejo restaurar msdb
para obter todos os meus trabalhos de agente e similares e estou recebendo o seguinte erro:
A restauração do banco de dados 'msdb' falhou.
(Microsoft.SqlServer.Management.RelationalEngineTasks)
System.Data.SqlClient.SqlError: O backup do banco de dados do sistema no dispositivo \10.0.0.3\BackUps\NOFAULT2010_msdb_FULL_20121016_220006.bak não pode ser restaurado porque foi criado por uma versão diferente do servidor (10.50.1600) do que este servidor (11.00.2100).
(Microsoft.SqlServer.SmoExtended)
Eu entenderia isso se estivesse tentando ir de 2012 para 2008, mas isso é novo para mim.
De qualquer forma, para fazer isso funcionar? Ou, se não for a melhor maneira de transferir os trabalhos do agente, usuários, blazi blah?
Obrigado
Se você estivesse tentando restaurar um banco de dados de usuário - isso restauraria bem. O problema é que este é um banco de dados do sistema. Os bancos de dados do sistema são projetados para a versão do SQL em que deveriam funcionar. Para que o SQL Server 2008 R2
MSDB
funcione no SQL Server 2012, você não precisaria ter nenhum recurso diferente entre as duas versões. Faz sentido?A resposta curta Para trazer seus trabalhos, você os criaria no servidor antigo e aplicaria o script no novo. Você pode fazer isso simplesmente clicando com o botão direito e criando o script de cada trabalho, se tiver alguns. Ou olhando para um script com PowerShell ou alguma outra abordagem se você tiver uma tonelada e não quiser um de cada vez.
Para obter os logins, você usaria o
Sp_help_revlogin
script que mencionei abaixo e um script para copiar as funções e permissões de nível de servidor do antigo e copiá-los para o novo.Basicamente, para 90% do que você traria, tenho certeza de que a resposta é "script" e, em seguida, aplique esse script no novo servidor e os logins, os trabalhos etc.
Master
eMSDB
bancos de dados projetados para SQL Server 2012.A resposta um pouco mais longa e uma discussão rápida sobre abordagens para migração/atualização
Então, se você está tentando transferir todos esses objetos para o SQL Server 2012, você tem duas opções básicas em sua abordagem.
Prós - você obtém todas essas 'coisas' (trabalhos de agente, servidores vinculados, logins, alertas, operadores, perfil de e-mail, etc.) e não precisa copiar objetos.
Contras - pode ser um pouco confuso, funciona bem hoje em dia e é compatível, mas sou paranóico e gostaria de ter certeza de que tenho sucesso e uma opção de reversão rápida (se houver problemas no novo servidor, basta reverter para o servidor antigo durante uma migração. Com uma atualização no local, é muito mais, bem, final).
Você pode começar aqui para uma atualização no local.
Nesse caso, basta inverter os prós e os contras de cima. A abordagem não é tão difícil ou extenuante. Requer apenas um bom planejamento. Basicamente você:
Em seu servidor antigo, crie o script de todos os objetos que deseja mover de acordo com as instruções e abordagem para cada tipo de objeto que normalmente pode ser encontrado nos Manuais Online (objetos como Trabalhos, Servidores Vinculados, Alertas do SQL Agent, etc.). .
Use uma ferramenta como
sp_help_revlogin
para mover seus logins e um script como este para mover as permissões de login.Faça backup e restaure seus bancos de dados que já contêm usuários e permissões no banco de dados (eu gosto de fazer isso em vez de anexar desanexar porque ajuda a preservar a capacidade de reversão, mas já vi e fiz isso de qualquer maneira). planejando oferecer suporte aos bancos de dados no modo 2012 e os testei dessa maneira. Ou mantenha-os no modo 2008, se esse for o seu plano.
Execute esses scripts para todos os objetos como trabalhos, logins, etc. no novo servidor que você criou acima do servidor antigo (bom fazer a maioria deles após os bancos de dados. padrão para não está lá ou uma etapa T-SQL no banco de dados de um trabalho não está lá, etc.)
A outra coisa boa sobre essa abordagem é que você pode fazer uma execução de teste com antecedência durante o horário comercial. teste sua lista de verificação, seu plano de reversão etc. e faça a preparação para a noite de lançamento.
Este é um post antigo, mas gostaria de propor uma solução diferente.
Em seu sistema Sql2012, restaure um backup do banco de dados SQL2008 MSDB, mas dê a ele um nome diferente durante a restauração ('msdb_2008'). Além disso, certifique-se de não substituir os arquivos originais. O processo de restauração atualizará a versão do banco de dados para SQL2012.
Desanexe o banco de dados MSDB_2008 de sua instância SQL2012 (mas lembre-se de onde estão os arquivos recuperados!)
Interrompa o serviço do SQL Server (o SQL Agent será interrompido como resultado)
Navegue até a área onde estão seus arquivos MSDB originais e mova-os para uma subpasta para mantê-los seguros.
Copie os arquivos de banco de dados MSDB_2008 para o caminho onde estavam os arquivos MSDB originais, renomeando-os no processo para corresponder aos arquivos MSDB originais.
Reinicie o SQL Server.