Backup a livello di tabella


Risposte:


89

Non è possibile utilizzare il BACKUP DATABASEcomando per eseguire il backup di una singola tabella, a meno che, ovviamente, la tabella in questione non sia assegnata alla propria FILEGROUP.

Quello che puoi fare, come hai suggerito, è esportare i dati della tabella in un file CSV. Ora per ottenere la definizione della tua tabella puoi "Script out" lo CREATE TABLEscript.

Puoi farlo all'interno di SQL Server Management Studio, tramite:

facendo clic con il pulsante destro del mouse su Database> Attività> Genera script

È quindi possibile selezionare la tabella che si desidera inserire nello script e anche scegliere di includere qualsiasi oggetto associato, come vincoli e indici.

per andare d' DATAaccordo con solo il schema, devi scegliere Advancednella scheda delle opzioni di scripting e nella GENERALsezione impostare la Types of data to scriptselezioneSchema and Data

Spero che questo aiuti, ma sentiti libero di contattarmi direttamente se hai bisogno di ulteriore assistenza.


La "Pubblicazione guidata database" automatizzerà i passaggi che ho descritto.
John Sansom

25
John, non dimenticare di menzionare che per ottenere i DATI insieme solo allo schema, devi scegliere Advancednella scheda delle opzioni di scripting set e nella sezione GENERALE impostare il file Types of data to scriptselect Schema and Data. Non era ovvio la prima volta che l'ho fatto.
Alex C

Il suggerimento di Alex è molto importante. Inoltre, c'è un modo per scrivere questo script invece di passare attraverso i menu in SQL Server?
sooprise

1
Dovresti essere in grado di ottenere ciò utilizzando una combinazione di PowerShell e SMO. Vedi questo articolo di Phil Factor come guida: simple-talk.com/sql/database-administration/…
John Sansom

@AlexC Grazie! Mi ha salvato il mal di testa :)
Simon Whitehead

55

Sto utilizzando l' utilità di copia di massa per ottenere backup a livello di tabella

esportare:

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

importare:

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

come puoi vedere, puoi esportare in base a qualsiasi query, quindi puoi persino eseguire backup incrementali con questo. Inoltre, è utilizzabile tramite script rispetto agli altri metodi qui menzionati che utilizzano SSMS.


1
Solo un avviso. Se si desidera semplicemente copiare la tabella utilizzando il nome anziché una query di selezione, modificare lo script in modo che utilizzi OUT al posto di QUERYOUT.
Valamas

45

Ecco i passaggi di cui hai bisogno. Step5 è importante se vuoi i dati. Il passaggio 2 è dove puoi selezionare le singole tabelle.

La versione dello stack EDIT non è del tutto leggibile ... ecco un'immagine a grandezza naturale http://i.imgur.com/y6ZCL.jpg

Ecco i passaggi dalla risposta di John Sansom


Quale SSMS stavi usando @Alex C? Nel mio SSMS2005 il mio mago è diverso dal tuo.
KirdApe

Mi dispiace, sono passati anni da quando ho risposto a questa domanda. Presumo che stavo probabilmente usando 2008. Ho appena controllato la mia procedura guidata ora e non è più necessario fare clic su avanzato, ma invece l'intero elenco dal fotogramma 5 (sopra) appare come una delle pagine della procedura guidata. Inoltre, l'opzione STRUTTURA e DATI è stata suddivisa in opzioni VERO / FALSO per ciascuna individualmente. Fammi sapere se c'è qualcos'altro che posso fare per aiutarti.
Alex C

19

È possibile eseguire la query seguente per eseguire un backup della tabella esistente che creerebbe una nuova tabella con la struttura esistente della vecchia tabella insieme ai dati.

select * into newtablename from oldtablename

Per copiare solo la struttura della tabella, utilizzare la query seguente.

select * into newtablename from oldtablename where 1 = 2

7

È simile alla soluzione di qntmfred , ma utilizza un dump della tabella diretto. Questa opzione è leggermente più veloce (vedi documenti BCP ):

esportare:

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

importare:

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

1
Questo include vincoli?
user3071284



2

È possibile utilizzare la Pubblicazione guidata database gratuita di Microsoft per generare file di testo con script SQL (CREATE TABLE e INSERT INTO).

È possibile creare un file di questo tipo per una singola tabella e "ripristinare" l'intera tabella, inclusi i dati, semplicemente eseguendo lo script SQL.


+1 Per tutte le persone abituate agli script SQL, questa è l'opzione che stai cercando. Deseleziona "Script tutti gli oggetti nel database selezionato" per selezionare le singole tabelle. Screenshot: products.secureserver.net/products/hosting/…
lepe

2

Non so se corrisponderà al problema qui descritto. Ho dovuto prendere il backup incrementale di una tabella! (Dovrebbero essere copiati solo i nuovi dati inseriti). Progettavo un pacchetto DTS in cui.

  1. Recupero nuovi record (sulla base di una colonna "stato") e trasferisco i dati a destinazione. (Tramite "Transform Data Task")

  2. Quindi ho appena aggiornato la colonna "stato". (Tramite "Esegui attività SQL")

Ho dovuto correggere correttamente il "flusso di lavoro".


2

Utilizzare Importazione ed esportazione guidata di SQL Server.

  1. ssms
  2. Apri il Motore di database
  3. Alt. fare clic sul database contenente la tabella da esportare
  4. Seleziona "Attività"
  5. Seleziona "Esporta dati ..."
  6. Segui la procedura guidata

1

Ogni modello di ripristino consente di eseguire il backup di un database SQL Server intero o parziale o di singoli file o filegroup del database. Non è possibile creare backup a livello di tabella .

Da: Panoramica del backup (SQL Server)


0

Probabilmente hai due opzioni, poiché SQL Server non supporta i backup delle tabelle. Entrambi inizierebbero con lo script per la creazione della tabella. Quindi puoi utilizzare l'opzione Tabella script - INSERT che genererà molte istruzioni di inserimento, oppure puoi utilizzare i servizi di integrazione (DTS con 2000) o simili per esportare i dati come CSV o simili.



0

Se stai cercando di poter ripristinare una tabella dopo che qualcuno ha erroneamente cancellato delle righe da essa, potresti dare un'occhiata agli snapshot del database. È possibile ripristinare la tabella abbastanza facilmente (o un sottoinsieme delle righe) dall'istantanea. Vedi http://msdn.microsoft.com/en-us/library/ms175158.aspx


0

Un'app gratuita denominata SqlTableZip porterà a termine il lavoro. Fondamentalmente, scrivi una query (che, ovviamente, può anche essere [seleziona * dalla tabella]) e l'app crea un file compresso con tutti i dati, che possono essere ripristinati in seguito.

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


0

Handy Backup crea automaticamente i file di dump da MS SQL Server, incluso MSSQL 2005/2008. Questi dump sono file binari a livello di tabella, contenenti copie esatte del particolare contenuto del database.

Per creare un semplice dump con Handy Backup, segui le istruzioni seguenti:

  1. Installa Handy Backup e crea una nuova attività di backup.
  2. Selezionare "MSSQL" in un passaggio 2 come origine dati. In una nuova finestra, contrassegnare un database di cui eseguire il backup.
  3. Seleziona tra diverse destinazioni in cui archiviare i backup.
  4. In un passaggio 4, seleziona l'opzione di backup "Completo". Imposta un timestamp se ne hai bisogno.
  5. Saltare un passaggio 5 a meno che non sia necessario comprimere o crittografare un file di dump risultante.
  6. In un passaggio 6, impostare una pianificazione per un'attività per creare dump periodicamente (altrimenti eseguire un'attività manualmente).
  7. Ancora una volta, salta un passaggio 7 e assegna un nome all'attività in un passaggio 8. Hai terminato l'attività!

Ora esegui la tua nuova attività facendo clic su un'icona prima del suo nome o attendi l'ora pianificata. Handy Backup creerà automaticamente un dump per il tuo database. Quindi apri la destinazione del backup. Troverai una cartella (o un paio di cartelle) con i tuoi backup di MS SQL. Qualsiasi cartella di questo tipo conterrà un file di dump a livello di tabella, costituito da alcune tabelle binarie e impostazioni compresse in un unico ZIP.

Altri database

Handy Backup può salvare dump per MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes e qualsiasi database SQL generico con driver ODBC. Alcuni di questi database richiedono passaggi aggiuntivi per stabilire connessioni tra DBMS e Handy Backup.

Gli strumenti sopra descritti spesso eseguono il dump dei database SQL come sequenza di comandi SQL a livello di tabella, rendendo questi file pronti per qualsiasi modifica manuale necessaria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.