È possibile eseguire il backup e il ripristino di parte di un database in SQL Server?


19

Abbiamo un database sql-server 2005 che trasferiamo regolarmente dal nostro sito client al nostro. Questo richiede molto tempo perché non abbiamo una connessione diretta e dobbiamo trasferire il file sulla loro applicazione di trasferimento file basata sul web. Il database è attualmente di circa 10 GB, tuttavia non abbiamo bisogno di tutti i dati - la maggior parte di essi si trova in tabelle di controllo e tabelle che contengono valori calcolati che possono essere rigenerati.

Ho cercato di creare un filegroup per contenere le tabelle di controllo e speravo di poter semplicemente eseguire il backup e ripristinare il filegroup primario. Posso eseguire il backup correttamente ma durante il ripristino viene visualizzato un errore che indica che non lo sto ripristinando nello stesso database. È possibile ripristinare parte di un database su un server diverso utilizzando filegroup? C'è un modo migliore per farlo?


1
Puoi trarre vantaggio dalla lettura di questa domanda: il backup più piccolo possibile ... con SQL Server , e in particolare la risposta di Brent.
Marian,

Dal momento che questo non sembra possibile senza molto Hackery, credo che potremmo cercare di spostare tutte le tabelle dei registri di controllo in un database separato
Adam Butler,

Ciò non richiederebbe una modifica del codice nell'applicazione? È un po 'troppo per chiedere al cliente di passare.
Shawn Melton,

Risposte:


15

Ad essere onesti, questo è più semplice:

  • eseguire il backup / ripristinare una copia localmente
  • rimuovere i dati indesiderati dalla copia (con CANC o TRUNCATE TABLE, non DROP ...)
  • spedire la copia

Non mi preoccuperei dei filegroup a causa della maggiore complessità che hai notato ...


1
Suggerisco di cambiare questo database appena ripristinato in un semplice modello di recupero. msdn.microsoft.com/en-CA/library/ms189272.aspx
datagod

7

Il modo in cui parli di aver bisogno solo del gruppo di file primario, mi sembra che tu voglia solo la struttura del database e una quantità molto piccola di dati. Vorrei suggerire se si desidera semplicemente un aggiornamento della struttura del database (oggetti, tabelle, ecc.) Per eseguire semplicemente lo script del database con tutti gli oggetti. Questo può essere fatto rapidamente e facilmente con PowerShell.

Quindi i dati di cui hai effettivamente bisogno, che non possono essere rigenerati, semplicemente esportali (uno script di PowerShell potrebbe fare anche questo). Sono sicuro che il file di esportazione può quindi essere compresso in dimensioni ridotte e quindi trasferito tramite la connessione al tuo sito.

Naturalmente proprio come questo, il suggerimento di @gbn potrebbe essere copiato da script, quindi spetta a te determinare quale opzione richiede il minor tempo.


2

Ciò è possibile utilizzando il ripristino frammentario . Gli oggetti e i filegroup del database di origine devono essere organizzati in modo da supportarlo. Il RESTORE richiede parole chiave specifiche aggiuntive.

Mentre il concetto potrebbe richiedere un po 'di tempo per abituarsi, la quantità di script da implementare non è altro che quella delle altre soluzioni suggerite.


-1

Fare clic con il pulsante destro del mouse e generare script, quindi modificare il nome del database su target (USE db).

Spiegato qui


Che cosa c'è che non va?
Jude,
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.