Backup em nível de tabela

Respostas:

89

Você não pode usar o BACKUP DATABASEcomando para fazer backup de uma única tabela, a menos, é claro, que a tabela em questão esteja alocada para ela FILEGROUP.

O que você pode fazer, como sugeriu, é exportar os dados da tabela para um arquivo CSV. Agora, a fim de obter a definição da sua mesa, você pode fazer o 'script' do CREATE TABLEscript.

Você pode fazer isso no SQL Server Management Studio:

clicando com o botão direito em Banco de dados> Tarefas> Gerar script

Você pode então selecionar a tabela que deseja criar o script e também optar por incluir quaisquer objetos associados, como restrições e índices.

a fim de obter o DATAjunto com apenas o schema, você tem que escolher Advancedno set guia opções de script, e na GENERALseção de definir o Types of data to scriptselectSchema and Data

Espero que isso ajude, mas sinta-se à vontade para entrar em contato comigo diretamente se precisar de mais assistência.

John Sansom
fonte
O 'Assistente de publicação de banco de dados' automatizará as etapas que descrevi.
John Sansom,
25
John, Não se esqueça de mencionar que para obter os DADOS junto com apenas o esquema, você deve escolher Advancedna guia definir opções de script e na seção GERAL definir o Types of data to scriptselect Schema and Data. Isso não foi óbvio na primeira vez que fiz isso.
Alex C
A dica de Alex é muito importante. Além disso, existe uma maneira de fazer o script em vez de passar pelos menus no SQL Server?
sooprise
1
Você deve conseguir isso usando uma combinação de PowerShell e SMO. Veja este artigo do Phil Factor como um guia: simple-talk.com/sql/database-administration/…
John Sansom
@AlexC Obrigado! Me salvou de uma dor de cabeça :)
Simon Whitehead
55

Estou usando o utilitário de cópia em massa para obter backups em nível de tabela

Exportar:

bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

importar:

bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

como você pode ver, você pode exportar com base em qualquer consulta, então você pode até fazer backups incrementais com isso. Além disso, é possível fazer scripts, ao contrário dos outros métodos mencionados aqui que usam SSMS.

Kenwarner
fonte
1
Apenas um aviso. Se você deseja apenas copiar a tabela usando o nome em vez de uma consulta selecionada, altere o script para usar OUT no lugar de QUERYOUT.
Valamas
45

Aqui estão as etapas de que você precisa. O passo 5 é importante se você quiser os dados. A etapa 2 é onde você pode selecionar tabelas individuais.

A versão da pilha EDIT não é totalmente legível ... aqui está uma imagem em tamanho real http://i.imgur.com/y6ZCL.jpg

Aqui estão os passos da resposta de John Sansom

Alex C
fonte
Qual SSMS você estava usando @Alex C? No meu SSMS2005, meu assistente é diferente do seu.
KirdApe de
Sinto muito, já se passaram anos desde que respondi isso. Presumo que provavelmente estava usando 2008. Acabei de verificar meu assistente agora e você não precisa mais clicar em avançado, mas em vez disso, toda a lista do quadro 5 (acima) aparece como uma das páginas do assistente. Além disso, as opções STRUCTURE e DATA foram divididas nas opções TRUE / FALSE para cada uma individualmente. Informe se houver mais alguma coisa que eu possa fazer para ajudar.
Alex C de
19

Você pode executar a consulta abaixo para fazer um backup da tabela existente, o que criaria uma nova tabela com a estrutura existente da tabela antiga junto com os dados.

select * into newtablename from oldtablename

Para copiar apenas a estrutura da tabela, use a consulta abaixo.

select * into newtablename from oldtablename where 1 = 2
Haripriya
fonte
7

Isso é semelhante à solução do qntmfred , mas usando um despejo de tabela direto. Esta opção é um pouco mais rápida (consulte os documentos BCP ):

Exportar:

bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E

importar:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Diego
fonte
1
Isso inclui restrições?
user3071284
4

Se você está procurando por algo como o MySQL DUMP, então uma boa notícia: o SQL Server 2008 Management Studio adicionou essa capacidade.

No SSMS, apenas clique com o botão direito no banco de dados em questão e selecione Tarefas> Gerar Scripts . Em seguida, na segunda página do assistente de opções, certifique-se de selecionar que deseja os dados em script também , e isso gerará o que equivale a um DUMParquivo para você.

Michael K. Campbell
fonte
3

Crie um novo grupo de arquivos, coloque esta tabela nele e faça backup apenas deste grupo de arquivos.

Konstantin Tarkus
fonte
Isso inclui restrições?
user3071284
2

Você pode usar o Database Publishing Wizard gratuito da Microsoft para gerar arquivos de texto com scripts SQL (CREATE TABLE e INSERT INTO).

Você pode criar esse arquivo para uma única tabela e pode "restaurar" a tabela completa, incluindo os dados, simplesmente executando o script SQL.

Christian Specht
fonte
+1 Para todas as pessoas que estão acostumadas com scripts SQL, esta é a opção que você está procurando. Desmarque a opção "Script de todos os objetos no banco de dados selecionado" para selecionar tabelas individuais. Capturas de tela: products.secureserver.net/products/hosting/…
lepe
2

Não sei se vai corresponder ao problema descrito aqui. Tive que fazer um backup incremental da tabela! (Apenas os novos dados inseridos devem ser copiados). Eu costumava projetar um pacote DTS onde.

  1. Eu busco novos registros (com base em uma coluna de 'status') e transferi os dados para o destino. (Por meio de 'Transform Data Task')

  2. Então, acabei de atualizar a coluna 'status'. (Por meio de 'Executar Tarefa SQL')

Tive que consertar o 'fluxo de trabalho' corretamente.

azmnoman
fonte
2

Use o Assistente de Importação e Exportação do SQL Server.

  1. ssms
  2. Abra o mecanismo de banco de dados
  3. Alt. clique no banco de dados que contém a tabela para exportar
  4. Selecione "Tarefas"
  5. Selecione "Exportar dados ..."
  6. Siga o assistente
EndUzr
fonte
1

Cada modelo de recuperação permite fazer backup de um banco de dados SQL Server inteiro ou parcial ou de arquivos ou grupos de arquivos individuais do banco de dados. Backups em nível de tabela não podem ser criados .

De: Visão geral do backup (SQL Server)

Trigo mitch
fonte
0

Você provavelmente tem duas opções, pois o SQL Server não oferece suporte para backups de tabelas. Ambos começariam com o script de criação da tabela. Então você pode usar a opção Script Table - INSERT que irá gerar muitas instruções de inserção, ou você pode usar os serviços de integração (DTS com 2000) ou similar para exportar os dados como CSV ou similar.

Milhas D
fonte
0

Se você deseja restaurar uma tabela depois que alguém excluiu por engano as linhas dela, você pode dar uma olhada nos instantâneos do banco de dados. Você pode restaurar a tabela com bastante facilidade (ou um subconjunto das linhas) a partir do instantâneo. Consulte http://msdn.microsoft.com/en-us/library/ms175158.aspx

SPE109
fonte
0

Um aplicativo gratuito chamado SqlTableZip fará o trabalho. Basicamente, você escreve qualquer consulta (que, é claro, também pode ser [selecionar * da tabela]) e o aplicativo cria um arquivo compactado com todos os dados, que pode ser restaurado posteriormente.

Link: http://www.doccolabs.com/products_sqltablezip.html

asapir
fonte
0

O Handy Backup cria arquivos de despejo automaticamente do MS SQL Server, incluindo o MSSQL 2005/2008. Esses dumps são arquivos binários em nível de tabela, contendo cópias exatas do conteúdo específico do banco de dados.

Para fazer um despejo simples com o Handy Backup, siga a próxima instrução:

  1. Instale o Handy Backup e crie uma nova tarefa de backup.
  2. Selecione “MSSQL” em uma Etapa 2 como fonte de dados. Em uma nova janela, marque um banco de dados para fazer backup.
  3. Selecione entre os diferentes destinos onde você armazenará seus backups.
  4. Em uma Etapa 4, selecione a opção de backup “Completo”. Configure um carimbo de data / hora, se necessário.
  5. Pule a Etapa 5, a menos que você precise compactar ou criptografar um arquivo de despejo resultante.
  6. Em uma Etapa 6, configure uma programação para uma tarefa para criar despejos periodicamente (caso contrário, execute uma tarefa manualmente).
  7. Novamente, pule a Etapa 7 e dê um nome à sua tarefa na Etapa 8. Você concluiu a tarefa!

Agora execute sua nova tarefa clicando em um ícone antes de seu nome ou aguarde o horário agendado. O Handy Backup criará automaticamente um dump para o seu banco de dados. Em seguida, abra seu destino de backup. Você encontrará uma pasta (ou algumas pastas) com seus backups do MS SQL. Qualquer uma dessas pastas conterá um arquivo de despejo em nível de tabela, que consiste em algumas tabelas binárias e configurações compactadas em um único ZIP.

Outros bancos de dados

O Handy Backup pode salvar dumps para MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes e qualquer banco de dados SQL genérico com um driver ODBC. Alguns desses bancos de dados requerem etapas adicionais para estabelecer conexões entre o DBMS e o Handy Backup.

As ferramentas descritas acima geralmente descartam bancos de dados SQL como uma sequência de comando SQL em nível de tabela, tornando esses arquivos prontos para qualquer modificação manual necessária.

Mark Geek
fonte