Voglio fare un backup di tabelle particolari disponibili nel mio database in un .bak
file, e tutto ciò dovrebbe essere fatto usando uno script T-SQL.
Voglio fare un backup di tabelle particolari disponibili nel mio database in un .bak
file, e tutto ciò dovrebbe essere fatto usando uno script T-SQL.
Risposte:
I tipi di backup dipendono dal modello di recupero di SQL Server. Ogni modello di recupero consente di eseguire il backup del database SQL Server completo o parziale o di singoli file o filegroup del database. Impossibile creare il backup a livello di tabella, non esiste tale opzione. Ma c'è una soluzione alternativa per questo
È possibile eseguire il backup della tabella di SQL Server in SQL Server. Esistono vari modi alternativi per eseguire il backup di una tabella in SQL Server SQL
Qui sto spiegando solo il primo riposo che potresti conoscere
Metodo 1 - Eseguire il backup della tabella sql utilizzando BCP (PROGRAMMA COPIA BULK)
Per eseguire il backup di una tabella SQL denominata "Person.Contact", che si trova in SQL Server AdventureWorks, è necessario eseguire il seguente script, che
-- 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
PRODUZIONE
Nota -
In alternativa , è possibile eseguire il BCP tramite il prompt dei comandi e digitare il seguente comando nel prompt dei comandi, entrambe le operazioni eseguono la stessa attività, ma mi piace il metodo sopra menzionato in quanto si tratta di salvare il tipo aprendo un prompt dei comandi e digitare.
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
Metodo 1:
Se si è interessati solo ai dati nelle tabelle e a quelli da utilizzare localmente all'interno dello stesso database e server, è possibile utilizzare la query seguente per eseguire il backup delle tabelle selezionate:
SELECT * INTO newtable1
FROM originalTable1
--- Per la tabella 2
SELECT * INTO newtable2
FROM originalTable2
e così via ... per n numero di tabelle
Questa istruzione CREA le tabelle chiamate newtable1, newtable1, .. quindi non è necessario crearlo in precedenza.
Nota * Questo metodo prende il backup abbastanza velocemente ma il principale svantaggio sarebbe che non trasporta le chiavi, gli indici e i vincoli della tabella e il backup è archiviato nel database non da qualche parte esternamente a un file
Metodo 2:
Se si desidera eseguire il backup della tabella su un altro server per qualsiasi soluzione di ripristino di emergenza o prevenzione della perdita di dati, è possibile eseguire lo scripting della tabella utilizzando l'opzione Genera script da Attività.
Innanzitutto, fai clic con il pulsante destro del mouse sul database che contiene le tabelle di cui desideri eseguire il backup e scegli Attività -> Genera script
Seleziona il tuo database dall'elenco di cui è necessario eseguire il backup delle tabelle
La schermata successiva che appare sono le Opzioni script.
Scorri verso il basso sulle opzioni dello script fino a visualizzare Opzioni tabella / vista. Vogliamo che sia vero quanto segue: Controlla vincoli, Dati script, Chiavi esterne, Chiavi primarie, Trigger e Chiavi univoche. (Oppure puoi scegliere quello che ti serve ovviamente). Seleziona Avanti e ci viene presentata la schermata Seleziona tipi di oggetto
Seleziona Tabelle e premi il prossimo. Infine, scegli la tabella o le tabelle di cui desideri eseguire il backup e premi successivamente
Metodo 3:
È possibile utilizzare l' utilità bcp anche per i backup delle tabelle.
Non è possibile eseguire il backup di tabelle specifiche in un .bak
file, è possibile esportarle in CSV o copiarle o utilizzarle bcp
per inserirle in un file.
Cosa si può fare se si desidera eseguire il backup di tabelle specifiche (e sono sempre le stesse) è spostarle in un file group
gruppo di file separato ed eseguire il backup.
Vedere Backup di file e filegroup per la documentazione.
Ad esempio, se si desidera eseguire il backup di file o filegroup specifici utilizzando T-SQL, è possibile utilizzare (dal collegamento)
--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
Sulla base del metodo 1 dalla risposta di KASQLDBA:
Creare un database separato per contenere la copia di backup delle tabelle. Modifica la query fornita da KASQLDBA in modo da selezionare dalla tabella originale e copiarla nel database alternativo.
SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1
--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2
È possibile creare uno script che elimini le tabelle nel nuovo database, quindi eseguire la selezione in comandi per ogni tabella richiesta. Se si desidera disporre di indici e altri oggetti disponibili, è possibile crearli nel nuovo database e troncare le tabelle prima di ripopolarle. Se si preferisce il troncamento, è necessario utilizzare le istruzioni insert al posto di select into.
Questa opzione ti fornirà un metodo per creare un file .BAK. È sufficiente eseguire un comando del database di backup dopo aver popolato le tabelle nel nuovo database.
Utilizzando la funzionalità di esportazione di massa di SSMS, ecco il metodo migliore e più semplice menzionato
Procedura guidata di importazione ed esportazione di SQL Server : la procedura guidata di importazione ed esportazione di SQL Server fornisce un'interfaccia utente grafica su un pacchetto SSIS (SQL Server Integration Services). Una volta creato, il pacchetto può essere automatizzato, per essere eseguito secondo una pianificazione. Può essere ulteriormente configurato e modificato utilizzando SQL Server Data Tools (SSDT)
Per iniziare, apri la procedura guidata di importazione ed esportazione, fai clic con il pulsante destro del mouse su un database e seleziona il sottomenu Attività -> Esporta dati.
Un altro metodo è usare script / sproc: DumpDataFromTable.sql da: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts
EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'
Devi passare: nome dello schema e nome della tabella, quindi percorso di output in cui verrà salvato lo script creato (la cartella della nota deve già essere creata / esistere e sql deve avere il permesso di vedere il commento in sproc).
E se desideri, puoi aggiungere una condizione alla tabella (il filtro deve iniziare con AND per il momento)
Eseguire il backup di una singola tabella con i suoi dati da un database in SQL Server 2008:
SELECT * INTO [dbo].[tbl_NewTable]
FROM [dbo].[tbl_OldTable]