Como posso fazer backup de tabelas específicas no SQL Server 2008 usando o script T-SQL

14

Quero fazer um backup de tabelas específicas disponíveis no meu banco de dados em um .bakarquivo e tudo isso deve ser feito usando um script T-SQL.

Firoz Tennali
fonte

Respostas:

11

Os tipos de backup dependem do modelo de recuperação do SQL Server. Todo modelo de recuperação permite fazer backup de um banco de dados inteiro ou parcial do SQL Server ou de arquivos ou grupos de arquivos individuais do banco de dados. O backup em nível de tabela não pode ser criado, não existe essa opção. Mas há uma solução alternativa para isso

Possível fazer backup da tabela do SQL Server no SQL Server. Existem várias maneiras alternativas de fazer backup de uma tabela no SQL Server SQL

  1. BCP (PROGRAMA DE CÓPIA EM GRANEL)
  2. Gerar script de tabela com dados
  3. Faça uma cópia da tabela usando SELECT INTO
  4. SALVAR dados da tabela diretamente em um arquivo simples
  5. Exportar dados usando o SSIS para qualquer destino

Aqui estou explicando apenas o primeiro descanso que você pode estar sabendo

Método 1 - Backup da tabela sql usando BCP (BULK COPY PROGRAM)

Para fazer backup de uma tabela SQL denominada "Person.Contact", que reside no SQL Server AdventureWorks, precisamos executar o seguinte script, que

-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' --  Table Name which you want    to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) --  Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd

RESULTADO

insira a descrição da imagem aqui

Nota -

  1. Você deve ter privilégios de importação / exportação em massa
  2. No script acima, -n indica tipos de dados SQL nativos, que são essenciais durante a restauração
  3. -T indica que você está se conectando ao SQL Server usando a autenticação do Windows, caso deseje se conectar usando a autenticação do SQL Server, use -U -P
  4. Isso também informa que você acelera a transferência de dados; no meu caso, foram 212468,08 linhas por segundo.
  5. Quando esse comando for concluído, ele criará um arquivo chamado "AdventureWorks.Person.Contact_20120222" é uma pasta de destino especificada

Como alternativa , você pode executar o BCP via prompt de comando e digitar o seguinte comando no prompt de comando, ambas as operações executam a mesma atividade, mas eu gosto do método acima mencionado, pois esse é o tipo save ao abrir um prompt e o tipo de comando.

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

insira a descrição da imagem aqui

Tufan Chand
fonte
9

Método 1:

Se você está preocupado apenas com dados nas tabelas e que devem ser usados ​​localmente no mesmo banco de dados e servidor, use a consulta abaixo para fazer backup das tabelas selecionadas:

SELECT * INTO newtable1
FROM originalTable1

--- Para a tabela 2

SELECT * INTO newtable2
FROM originalTable2

e assim por diante ... para n número de tabelas

Esta declaração criará as tabelas denominadas newtable1, newtable1, .. portanto, você não precisa criá-lo anteriormente.

Nota * Esse método leva o backup muito rápido, mas a principal desvantagem seria que ele não transporta as Chaves, índices e restrições da tabela e o backup é armazenado no banco de dados, não em um local externo a um arquivo

Método 2:

Se você deseja fazer backup da tabela em outro servidor para qualquer solução de recuperação de desastre ou prevenção contra perda de dados, poderá criar um script da tabela usando a opção Gerar scripts em Tarefas.

  1. Primeiro, clique com o botão direito do mouse no banco de dados que contém as tabelas que você deseja fazer backup e escolha Tarefas -> Gerar scripts

  2. Selecione seu banco de dados na lista cujas tabelas precisam de backup

  3. A próxima tela que aparece é as Opções de script.

  4. Role para baixo nas opções de script até ver Tabela / Exibir opções. Queremos que o seguinte seja verdadeiro: Verifique restrições, dados de script, chaves estrangeiras, chaves primárias, gatilhos e chaves exclusivas. (Ou você pode escolher o que precisar, é claro). Selecione Avançar e somos apresentados à tela Selecionar tipos de objeto

  5. Selecione Tabelas e clique em Avançar. Por fim, escolha a tabela ou tabelas que você deseja fazer backup e clique em Avançar

Método 3:

Você também pode usar o utilitário bcp para backups de tabelas.

KASQLDBA
fonte
1

Você não pode fazer backup de tabelas específicas para um .bakarquivo, pode exportá-las para csv ou bcpcolocá-las em script ou usá -las para colocá-las em um arquivo.

O que você pode fazer se desejar fazer backup de tabelas específicas (e elas sempre são iguais) é movê-las para um file groupgrupo de arquivos separado e fazer backup.

Consulte Fazer backup de arquivos e grupos de arquivos para obter a documentação.

Por exemplo, se você deseja fazer backup de arquivos ou grupos de arquivos específicos usando o T-SQL, você pode usar (no link)

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO

e

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO
Tom V - tente topanswers.xyz
fonte
1
Infelizmente, você deve fazer backup de todos os grupos de arquivos de leitura / gravação juntos, para não poder escolher apenas um.
Kamil Gosciminski 10/10/19
1

Com base no método 1 da resposta do KASQLDBA:

Crie um banco de dados separado para armazenar a cópia de backup das tabelas. Modifique a consulta fornecida pelo KASQLDBA para selecionar na tabela original e copiar no banco de dados alternativo.

SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1

--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2

Você pode criar um script que descarte as tabelas no novo banco de dados e, em seguida, execute o comando select em todas as tabelas necessárias. Se você deseja ter índices e outros objetos disponíveis, crie esses no seu novo banco de dados e trunque as tabelas antes de preenchê-las novamente. Se você preferir o truncamento, precisará usar instruções insert no lugar de select into.

Esta opção fornecerá um método para criar um arquivo .BAK. Você simplesmente executa um comando de banco de dados de backup depois de preencher as tabelas no novo banco de dados.

Gary
fonte
1

Usando o recurso de exportação em massa do SSMS, aqui está o melhor e mais fácil método mencionado

Assistente de importação e exportação do SQL Server : O assistente de Importação e Exportação do SQL Server fornece uma interface gráfica com o usuário em um pacote SSIS (SQL Server Integration Services). Uma vez criado, o pacote pode ser automatizado, para ser executado em uma programação. Ele pode ser configurado e modificado ainda mais usando o SSDT (SQL Server Data Tools)

Para começar, abra o Assistente de Importação e Exportação, clique com o botão direito do mouse em um banco de dados e selecione o submenu Tarefas -> Exportar comando de dados.

insira a descrição da imagem aqui

Sayyed Dawood
fonte
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
kevinsky
@kevinsky Sure! Mas pelo menos você deveria ter votado!
Sayyed Dawood
-1

Outro método é usar o script / sproc: DumpDataFromTable.sql em: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

Você deve passar: nome do esquema e nome da tabela e, em seguida, caminho de saída onde o script criado será salvo (a pasta de anotações já deve ter sido criada / existir e o sql deve ter permissão para ver o comentário no sproc).

E se você quiser, pode adicionar uma condição à tabela (o filtro deve começar com AND no momento)

Oleg Cio
fonte
este procedimento depende de um procedimento ausente PRC_WritereadFile
SubqueryCrunch
-2

Faça backup de uma única tabela com seus dados de um banco de dados no SQL Server 2008:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
JIYAUL MUSTAPHA
fonte