Sicherung auf Tabellenebene

Antworten:

89

Sie können den BACKUP DATABASEBefehl nicht zum Sichern einer einzelnen Tabelle verwenden, es sei denn, die betreffende Tabelle ist natürlich einer eigenen Tabelle zugeordnet FILEGROUP.

Wie Sie vorgeschlagen haben, können Sie die Tabellendaten in eine CSV-Datei exportieren. Um die Definition Ihrer Tabelle zu erhalten, können Sie das Skript "ausschreiben" CREATE TABLE.

Sie können dies in SQL Server Management Studio wie folgt tun:

Klicken Sie mit der rechten Maustaste auf Datenbank> Aufgaben> Skript generieren

Sie können dann die Tabelle auswählen, die Sie ausschreiben möchten, und auch alle zugehörigen Objekte wie Einschränkungen und Indizes einschließen.

Um DATAnur mit dem auszukommen schema, müssen Sie Advancedauf der Registerkarte "Skriptoptionen GENERALfestlegen" Types of data to scriptauswählen und im Abschnitt " Auswahl festlegen" auswählenSchema and Data

Ich hoffe, dies hilft, aber Sie können mich gerne direkt kontaktieren, wenn Sie weitere Unterstützung benötigen.

John Sansom
quelle
Der 'Datenbankveröffentlichungs-Assistent' automatisiert die von mir beschriebenen Schritte.
John Sansom
25
John, vergessen Sie nicht zu erwähnen, dass Sie, um die DATEN zusammen mit nur dem Schema zu erhalten, Advancedauf der Registerkarte "Skriptoptionen festlegen" Types of data to scriptauswählen und im Abschnitt "ALLGEMEIN" die Auswahl festlegen müssen Schema and Data. Das war nicht offensichtlich, als ich es das erste Mal tat.
Alex C
Alex 'Tipp ist sehr wichtig. Gibt es auch eine Möglichkeit, dies zu skripten, anstatt Menüs in SQL Server durchzugehen?
Sooprise
1
Sie sollten dies mit einer Kombination aus PowerShell und SMO erreichen können. Siehe diesen Artikel von Phil Factor als Leitfaden: simple-talk.com/sql/database-administration/…
John Sansom
@ AlexC Danke! Hat mir Kopfschmerzen erspart :)
Simon Whitehead
55

Ich verwende das Dienstprogramm für Massenkopien , um Sicherungen auf Tabellenebene zu erstellen

exportieren:

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

importieren:

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

Wie Sie sehen, können Sie basierend auf jeder Abfrage exportieren, sodass Sie damit sogar inkrementelle Sicherungen durchführen können. Außerdem ist es im Gegensatz zu den anderen hier genannten Methoden, die SSMS verwenden, skriptfähig.

Kenwarner
quelle
1
Nur ein Kopf hoch. Wenn Sie die Tabelle nur mit dem Namen anstelle einer ausgewählten Abfrage kopieren möchten, ändern Sie das Skript so, dass anstelle von QUERYOUT OUT verwendet wird.
Valamas
45

Hier sind die Schritte, die Sie benötigen. Schritt 5 ist wichtig, wenn Sie die Daten möchten. In Schritt 2 können Sie einzelne Tabellen auswählen.

Die Version des EDIT- Stacks ist nicht gut lesbar. Hier ist ein Bild in voller Größe: http://i.imgur.com/y6ZCL.jpg

Hier sind die Schritte von John Sansoms Antwort

Alex C.
quelle
Welches SSMS haben Sie mit @Alex C verwendet? In meinem SSMS2005 unterscheidet sich mein Assistent von Ihrem.
KirdApe
Es tut mir leid, es ist Jahre her, seit ich darauf geantwortet habe. Ich gehe davon aus, dass ich wahrscheinlich 2008 verwendet habe. Ich habe gerade meinen Assistenten überprüft und Sie müssen nicht mehr auf Erweitert klicken, sondern die gesamte Liste aus Frame 5 (oben) wird als eine der Assistentenseiten angezeigt. Zusätzlich wurde die Option STRUCTURE and DATA für jeden einzeln in TRUE / FALSE-Optionen aufgeteilt. Lassen Sie mich wissen, ob ich noch etwas tun kann, um zu helfen.
Alex C
19

Sie können die folgende Abfrage ausführen, um eine Sicherung der vorhandenen Tabelle zu erstellen, wodurch eine neue Tabelle mit der vorhandenen Struktur der alten Tabelle zusammen mit den Daten erstellt wird.

select * into newtablename from oldtablename

Verwenden Sie die folgende Abfrage, um nur die Tabellenstruktur zu kopieren.

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

Dies ähnelt der Lösung von qntmfred , verwendet jedoch einen direkten Tabellendump. Diese Option ist etwas schneller (siehe BCP-Dokumente ):

exportieren:

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

importieren:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Diego
quelle
1
Beinhaltet dies Einschränkungen?
user3071284
4

Wenn Sie nach etwas wie MySQL suchen DUMP, dann eine gute Nachricht: SQL Server 2008 Management Studio hat diese Funktion hinzugefügt.

Klicken Sie in SSMS einfach mit der rechten Maustaste auf die betreffende Datenbank und wählen Sie Aufgaben> Skripte generieren . Stellen Sie dann auf der zweiten Seite des Optionsassistenten sicher , dass Sie auch die geskripteten Daten auswählen möchten. Dadurch wird generiert, was DUMPfür Sie einer Datei entspricht.

Michael K. Campbell
quelle
3

Erstellen Sie eine neue Dateigruppe, legen Sie diese Tabelle darauf und sichern Sie nur diese Dateigruppe.

Konstantin Tarkus
quelle
Beinhaltet dies Einschränkungen?
user3071284
2

Mit dem kostenlosen Assistenten zum Veröffentlichen von Datenbanken von Microsoft können Sie Textdateien mit SQL-Skripten (CREATE TABLE und INSERT INTO) generieren.

Sie können eine solche Datei für eine einzelne Tabelle erstellen und die gesamte Tabelle einschließlich der Daten "wiederherstellen", indem Sie einfach das SQL-Skript ausführen.

Christian Specht
quelle
+1 Für alle Personen, die an SQL-Skripte gewöhnt sind, ist dies die Option, nach der Sie suchen. Deaktivieren Sie das Kontrollkästchen "Alle Objekte in der ausgewählten Datenbank skripten", um einzelne Tabellen auszuwählen. Screenshots: products.secureserver.net/products/hosting/…
Lepe
2

Ich weiß nicht, ob es zu dem hier beschriebenen Problem passt. Ich musste die inkrementelle Sicherung einer Tabelle erstellen! (Es sollten nur neu eingefügte Daten kopiert werden.) Ich habe dort ein DTS-Paket entworfen.

  1. Ich hole neue Datensätze (basierend auf einer 'Status'-Spalte) und übertrage die Daten an das Ziel. (Durch 'Transform Data Task')

  2. Dann habe ich gerade die Spalte 'Status' aktualisiert. (Durch 'SQL-Task ausführen')

Ich musste den 'Workflow' richtig reparieren.

Azmnoman
quelle
2

Verwenden Sie den SQL Server-Import- und Exportassistenten.

  1. ssms
  2. Öffnen Sie das Datenbankmodul
  3. Alt. Klicken Sie auf die Datenbank mit der zu exportierenden Tabelle
  4. Wählen Sie "Aufgaben"
  5. Wählen Sie "Daten exportieren ..."
  6. Folgen Sie dem Assistenten
EndUzr
quelle
1

Mit jedem Wiederherstellungsmodell können Sie eine ganze oder teilweise SQL Server-Datenbank oder einzelne Dateien oder Dateigruppen der Datenbank sichern. Sicherungen auf Tabellenebene können nicht erstellt werden .

Von: Sicherungsübersicht (SQL Server)

Mitch Wheat
quelle
0

Sie haben wahrscheinlich zwei Möglichkeiten, da SQL Server keine Tabellensicherungen unterstützt. Beide würden mit dem Erstellen von Skripten für die Tabellenerstellung beginnen. Anschließend können Sie entweder die Option Script Table - INSERT verwenden, die viele Einfügeanweisungen generiert, oder Sie können Integration Services (DTS mit 2000) oder ähnliches verwenden, um die Daten als CSV oder ähnlich zu exportieren.

Meilen D.
quelle
0

Wenn Sie eine Tabelle wiederherstellen möchten, nachdem jemand versehentlich Zeilen daraus gelöscht hat, können Sie sich möglicherweise Datenbank-Snapshots ansehen. Sie können die Tabelle ganz einfach (oder eine Teilmenge der Zeilen) aus dem Snapshot wiederherstellen. Siehe http://msdn.microsoft.com/en-us/library/ms175158.aspx

SPE109
quelle
0

Eine kostenlose App namens SqlTableZip erledigt den Job. Grundsätzlich schreiben Sie jede Abfrage (die natürlich auch [select * from table] sein kann) und die App erstellt eine komprimierte Datei mit allen Daten, die später wiederhergestellt werden können.

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

Asapir
quelle
0

Handy Backup erstellt automatisch Dump-Dateien von MS SQL Server, einschließlich MSSQL 2005/2008. Diese Speicherauszüge sind Binärdateien auf Tabellenebene, die genaue Kopien des jeweiligen Datenbankinhalts enthalten.

Befolgen Sie die folgenden Anweisungen, um mit Handy Backup einen einfachen Speicherauszug zu erstellen:

  1. Installieren Sie Handy Backup und erstellen Sie eine neue Sicherungsaufgabe.
  2. Wählen Sie in Schritt 2 "MSSQL" als Datenquelle aus. Markieren Sie in einem neuen Fenster eine Datenbank zum Sichern.
  3. Wählen Sie zwischen verschiedenen Zielen aus, an denen Sie Ihre Backups speichern möchten.
  4. Wählen Sie in Schritt 4 die Sicherungsoption "Vollständig" aus. Richten Sie bei Bedarf einen Zeitstempel ein.
  5. Überspringen Sie Schritt 5, es sei denn, Sie müssen eine resultierende Speicherauszugsdatei komprimieren oder verschlüsseln.
  6. Richten Sie in Schritt 6 einen Zeitplan für eine Aufgabe ein, um regelmäßig Speicherauszüge zu erstellen (andernfalls führen Sie eine Aufgabe manuell aus).
  7. Überspringen Sie erneut Schritt 7 und geben Sie Ihrer Aufgabe in Schritt 8 einen Namen. Sie sind mit der Aufgabe fertig!

Führen Sie nun Ihre neue Aufgabe aus, indem Sie auf ein Symbol vor dem Namen klicken oder auf die geplante Zeit warten. Handy Backup erstellt automatisch einen Speicherauszug für Ihre Datenbank. Öffnen Sie dann Ihr Sicherungsziel. Sie finden einen Ordner (oder mehrere Ordner) mit Ihren MS SQL-Sicherungen. Jeder solche Ordner enthält eine Dump-Datei auf Tabellenebene, die aus einigen Binärtabellen und Einstellungen besteht, die in einer einzigen ZIP-Datei komprimiert sind.

Andere Datenbanken

Handy Backup kann Speicherauszüge für MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes und jede generische SQL-Datenbank mit einem ODBC-Treiber speichern. Einige dieser Datenbanken erfordern zusätzliche Schritte, um Verbindungen zwischen dem DBMS und Handy Backup herzustellen.

Die oben beschriebenen Tools sichern SQL-Datenbanken häufig als SQL-Befehlssequenz auf Tabellenebene, sodass diese Dateien für alle erforderlichen manuellen Änderungen bereit sind.

Mark Geek
quelle