Wie kann ich mit T-SQL Script eine Sicherung bestimmter Tabellen in SQL Server 2008 durchführen?

14

Ich möchte eine Sicherungskopie bestimmter in meiner Datenbank verfügbarer Tabellen in einer .bakDatei erstellen, und all dies sollte mithilfe eines T-SQL-Skripts erfolgen.

Firoz Tennali
quelle

Antworten:

11

Die Sicherungstypen hängen vom SQL Server-Wiederherstellungsmodell ab. Mit jedem Wiederherstellungsmodell können Sie eine vollständige oder teilweise SQL Server-Datenbank oder einzelne Dateien oder Dateigruppen der Datenbank sichern. Eine Sicherung auf Tabellenebene kann nicht erstellt werden, es gibt keine solche Option. Hierfür gibt es jedoch eine Problemumgehung

Sicherung der SQL Server-Tabelle in SQL Server möglich. Es gibt verschiedene alternative Möglichkeiten zum Sichern einer Tabelle in SQL Server

  1. BCP (Massenkopieprogramm)
  2. Generieren Sie ein Tabellenskript mit Daten
  3. Erstellen Sie mit SELECT INTO eine Kopie der Tabelle
  4. Tabellendaten direkt in einer Flat-Datei speichern
  5. Exportieren Sie Daten mit SSIS an ein beliebiges Ziel

Hier erkläre ich nur die erste Pause, die Sie vielleicht kennen

Methode 1 - SQL-Tabelle mit BCP sichern (BULK COPY PROGRAM)

Um eine SQL-Tabelle mit dem Namen "Person.Contact" zu sichern, die sich in SQL Server AdventureWorks befindet, müssen Sie das folgende Skript ausführen

-- 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

AUSGABE

Bildbeschreibung hier eingeben

Hinweis -

  1. Sie müssen über Bulk-Import- / Exportberechtigungen verfügen
  2. In obigem Skript bezeichnet -n native SQL-Datentypen, die während der Wiederherstellung von entscheidender Bedeutung sind
  3. -T gibt an, dass Sie eine Verbindung mit SQL Server mithilfe der Windows-Authentifizierung herstellen, falls Sie eine Verbindung mithilfe der SQL Server-Authentifizierung herstellen möchten, verwenden Sie -U -P
  4. Dies wird auch zeigen, dass Sie die Datenübertragung beschleunigen, in meinem Fall waren dies 212468.08 Zeilen pro Sekunde.
  5. Sobald dieser Befehl ausgeführt wurde, wird eine Datei mit dem Namen "AdventureWorks.Person.Contact_20120222" als angegebener Zielordner erstellt

Alternativ können Sie den BCP über die Eingabeaufforderung ausführen und den folgenden Befehl in die Eingabeaufforderung eingeben. Beide Vorgänge führen die gleiche Aktivität aus, aber ich mag die oben erwähnte Methode, da dies der Speichertyp beim Öffnen einer Eingabeaufforderung und des Typs ist.

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

Bildbeschreibung hier eingeben

Tufan Chand
quelle
9

Methode 1:

Wenn Sie sich nur mit Daten in den Tabellen befassen und diese lokal in derselben Datenbank und auf demselben Server verwenden möchten, können Sie mit der folgenden Abfrage die Sicherung ausgewählter Tabellen durchführen:

SELECT * INTO newtable1
FROM originalTable1

--- Für Tabelle 2

SELECT * INTO newtable2
FROM originalTable2

und so weiter ... für n Tabellen

Diese Anweisung ERSTELLT die Tabellen newtable1, newtable1, .., damit Sie sie nicht vorher erstellen müssen.

Hinweis * Diese Methode nimmt die Sicherung sehr schnell vor, hat jedoch den großen Nachteil, dass die Schlüssel, Indizes und Einschränkungen der Tabelle nicht übernommen werden und die Sicherung in der Datenbank nicht extern in einer Datei gespeichert wird

Methode 2:

Wenn Sie die Tabelle für eine Notfallwiederherstellungslösung oder zur Verhinderung von Datenverlust auf einem anderen Server sichern möchten, können Sie die Tabelle mithilfe der Option "Skripte erstellen" unter "Aufgaben" skripten.

  1. Klicken Sie zunächst mit der rechten Maustaste auf die Datenbank, die die zu sichernden Tabellen enthält, und wählen Sie Aufgaben -> Skripts generieren

  2. Wählen Sie Ihre Datenbank aus der Liste aus, deren Tabellen gesichert werden müssen

  3. Der nächste Bildschirm, der angezeigt wird, sind die Skriptoptionen.

  4. Scrollen Sie in den Skriptoptionen nach unten, bis Sie Tabelle / Ansichtsoptionen sehen. Wir möchten, dass Folgendes zutrifft: Einschränkungen, Skriptdaten, Fremdschlüssel, Primärschlüssel, Trigger und eindeutige Schlüssel prüfen. (Oder Sie können wählen, was Sie natürlich brauchen). Wählen Sie Weiter, und der Bildschirm Objekttypen auswählen wird angezeigt

  5. Wählen Sie Tabellen und klicken Sie auf Weiter. Zuletzt wählen Sie die Tabelle (n) aus, die Sie sichern möchten, und klicken Sie auf "Weiter"

Methode 3:

Sie können das Dienstprogramm bcp auch für Tabellensicherungen verwenden.

KASQLDBA
quelle
1

Sie können bestimmte Tabellen nicht in eine .bakDatei sichern. Sie können sie in eine CSV-Datei exportieren, sie per Skript ausgeben oder zum Speichern bcpin einer Datei verwenden.

Wenn Sie bestimmte Tabellen sichern möchten (und diese immer gleich sind), können Sie sie in eine separate file groupGruppe verschieben und diese Dateigruppe sichern.

Siehe Sichern von Dateien und Dateigruppen für die Dokumentation.

Wenn Sie beispielsweise bestimmte Dateien oder Dateigruppen mit T-SQL sichern möchten, können Sie (über den Link)

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

und

--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 - Team Monica
quelle
1
Leider müssen Sie alle Lese- / Schreibdateigruppen zusammen sichern, sodass Sie nicht nur eine auswählen können.
Kamil Gosciminski
1

Aufbauend auf Methode 1 aus der Antwort von KASQLDBA:

Erstellen Sie eine separate Datenbank, in der die gesicherte Kopie der Tabellen gespeichert wird. Ändern Sie die von KASQLDBA bereitgestellte Abfrage so, dass Sie sie aus Ihrer Originaltabelle auswählen und in die alternative Datenbank kopieren.

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

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

Sie können ein Skript erstellen, das die Tabellen in der neuen Datenbank löscht, und dann die Befehle select into für jede erforderliche Tabelle ausführen. Wenn Indizes und andere Objekte verfügbar sein sollen, können Sie diese in Ihrer neuen Datenbank erstellen und die Tabellen abschneiden, bevor Sie sie erneut auffüllen. Wenn Sie das Abschneiden bevorzugen, müssen Sie anstelle von select into insert-Anweisungen verwenden.

Diese Option bietet Ihnen eine Methode zum Erstellen einer .BAK-Datei. Sie führen einfach einen Befehl zum Sichern der Datenbank aus, nachdem Sie die Tabellen in der neuen Datenbank ausgefüllt haben.

Gary
quelle
1

Unter Verwendung der Bulk - Export - Funktion von SSMS, hier ist die beste und einfachste Methode erwähnt

SQL Server-Import- und -Export-Assistent: Der SQL Server-Import- und -Export-Assistent bietet eine grafische Benutzeroberfläche für ein SQL Server Integration Services-Paket (SSIS). Einmal erstellt, kann das Paket automatisiert und nach einem Zeitplan ausgeführt werden. Sie kann mithilfe der SQL Server-Datentools (SSDT) ​​weiter konfiguriert und geändert werden.

Öffnen Sie zunächst den Import- und Export-Assistenten, klicken Sie mit der rechten Maustaste auf eine Datenbank und wählen Sie das Untermenü Aufgaben -> Daten exportieren.

Bildbeschreibung hier eingeben

Sayyed Dawood
quelle
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzuschließen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. - Aus der Bewertung
kevinsky
@ Kevin Sure! Aber zumindest hättest du dafür stimmen sollen!
Sayyed Dawood
-1

Eine andere Methode ist die Verwendung von script / sproc: DumpDataFromTable.sql von: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

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

Sie müssen Folgendes übergeben: Schemaname und Tabellenname, dann Ausgabepfad, in dem das erstellte Skript gespeichert wird (Notizordner muss bereits erstellt / vorhanden sein und SQL-Berechtigung haben, siehe Kommentar im Sproc).

Und wenn Sie möchten, können Sie der Tabelle eine Bedingung hinzufügen (Filter muss vorerst mit UND beginnen)

Oleg Cio
quelle
Diese Prozedur hängt von einer fehlenden Prozedur ab. PRC_WritereadFile
SubqueryCrunch
-2

Sichern Sie eine einzelne Tabelle mit ihren Daten aus einer Datenbank in SQL Server 2008:

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