Eu tenho vários clientes com o SQL Server 2008 e é isso que também tenho aqui no meu servidor. Uso arquivos de backup para enviar e voltar bancos de dados entre clientes e no meu escritório.
Eu li que, quando você cria um backup do SQL Server 2012, não há como restaurá-lo em uma instância de 2008. Eu assumi que o nível de compatibilidade resolveria esse problema, mas não. Portanto, não sei como atualizar. Além de atualizar todos os meus clientes de uma só vez, o que é impossível, não consigo pensar em nenhuma maneira limpa de fazer isso.
Eu tenho a necessidade de enviar um banco de dados para um cliente, bem como receber um banco de dados de um cliente. Esta é a minha primeira atualização de versão no SQL Server, por isso sou novo nesse problema. Alguma idéia de como proceder?
fonte
Respostas:
Há duas coisas envolvidas aqui: o número da versão do arquivo e o nível de compatibilidade. Quando você anexa um banco de dados a uma versão principal mais nova (como de 2008 a 2008R2 ou 2008R2 a 2012), a versão do banco de dados é alterada permanentemente e não é possível anexar esse banco de dados a uma versão mais antiga.
O nível de compatibilidade é para analisar o T-SQL obsoleto da velha escola que costumava funcionar em versões mais antigas do SQL Server. Não muda como os dados são armazenados no disco.
Para fornecer o banco de dados a alguém em uma versão mais antiga do SQL Server, você precisará exportar os dados e importá-los para outro banco de dados. Ferramentas como a Comparação de dados do Red Gate são úteis para isso.
fonte
bcp
.A configuração do nível de compatibilidade é usada pelo SQL Server para determinar como certos novos recursos devem ser tratados. Dessa forma, um banco de dados pode ser migrado para uma versão mais recente do SQL sem ter problemas com o aplicativo. O nível de compatibilidade pode ser alterado para frente e para trás.
Infelizmente, os arquivos de backup não são compatíveis com versões anteriores. Um método seria usar a importação / exportação para mover seus dados do banco de dados atual para a instância da versão mais antiga.
fonte
Para migrações SQL, use o Assistente de Migração de Banco de Dados SQL de código aberto e gratuito.
Eu tinha um banco de dados de 5 GB com alguns ~ 10 milhões de registros e tentei a rota via Generate Script e a executei com sqlcmd.exe. Primeiro de tudo, o script gerado nem sempre estava funcionando corretamente. Em segundo lugar, o sqlcmd.exe também pode falhar em arquivos grandes, reclamando da memória disponível. o osql.exe funciona, mas leva apenas idades (e tem os mesmos argumentos da linha de comando).
Então me deparei com uma ferramenta maravilhosa para migrar o SQL Server para os bancos de dados do SQL Azure. Isso funciona também para o SQL Server para o SQL Server, por exemplo, se você deseja migrar um banco de dados do SQL 2012 para o 2008 R2. Ele usa o bcp.exe, que usa cópia em massa. Existe uma versão da GUI e da linha de comando (Lote) disponível e é de código aberto. Consulte http://sqlazuremw.codeplex.com/ . No meu caso, a operação levou 16 minutos.
Em uma tela avançada, você pode selecionar se seu destino é o SQL Server, não o SQL Azure.
fonte
Eu descobri que o BCP é mais eficaz do que algumas das ferramentas para obter dados em uma versão anterior do SQL Server e para extrair dados do RDS. (Obrigado @ivan_posdeev.)
Primeiro, giro o esquema clicando com o botão direito do mouse no banco de dados do SQL Server Management Studio, Tarefas, Gerar scripts. Marque todos os objetos, em objetos avançados, assegure que tudo o que você precisa seja script (estatísticas, índices, etc.), desmarque "USE database" se o banco de dados de destino tiver um nome diferente, defina a compatibilidade com a versão do banco de dados de destino e gere uma arquivo que cria seu esquema. Criar um banco de dados sobre o seu destino e executar esse arquivo nele (usando
osql
,sqlcmd
ou o GUI).Para mover os dados, execute a consulta a seguir duas vezes no banco de dados de origem , primeiro comentando a segunda coluna para gerar o arquivo em lotes para extrair dados e, em seguida, comentando a primeira coluna para gerar o arquivo em lotes de importação para execução no seu destino. (Você precisa adicionar seus servidores de origem e destino, nomes de instâncias, diretórios de arquivos de saída e entrada, nomes de usuário e senhas. Para usar a segurança integrada, substitua as opções
-U
e-P
por just-T
.)Isso suporta Unicode, se você não precisar disso, altere a
-N
opção nas duas instruções para-n
.Após executar a verificação, os arquivos denominados schema.tablename.ERRORS.dat - incluirão todas as linhas que falharam, vazias se não houver.
Referência do MSDN para o BCP aqui , passeio mais amigável pelas opções do BCP aqui .
Eu achei isso muito superior à geração de scripts e a qualquer uma das ferramentas que eu tentei. Também é executado em bancos de dados RDS (que não permitem backups). Os arquivos de dados gerados têm 30% do tamanho dos scripts SQL, a execução deles leva uma fração do tempo e é muito mais confiável. (Os scripts gerados pelo SQL Server para dados de script sempre disparavam, às vezes previsivelmente às vezes não, o SQL gerado não era compatível com 2008R2 (por exemplo, usado
nvarchar(0)
, geralmente não era concluído sem motivo aparente) etc. O BCP também replica quaisquer violações de restrição , como integridade referencial.).fonte