it-swarm.com.de

Wie kann ich mit T-SQL Script eine Sicherungskopie bestimmter Tabellen in SQL Server 2008 erstellen?

Ich möchte eine Sicherungskopie bestimmter in meiner Datenbank verfügbarer Tabellen in einem .bak Datei, und all dies sollte mit einem T-SQL-Skript durchgeführt werden.

15
Firoz Tennali

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. Dafür gibt es jedoch eine Problemumgehung

Sicherung der SQL Server-Tabelle in SQL Server möglich. Es gibt verschiedene alternative Möglichkeiten, eine Tabelle in SQL SQL Server zu sichern

  1. BCP (BULK COPY PROGRAM)
  2. Generieren Sie ein Tabellenskript mit Daten
  3. Erstellen Sie eine Kopie der Tabelle mit SELECT INTO
  4. Tabellendaten direkt in einer Flatfile 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

enter image description here

Hinweis -

  1. Sie müssen über Massenimport-/Exportrechte verfügen
  2. Im obigen Skript bezeichnet -n native SQL-Datentypen, die während der Wiederherstellung von entscheidender Bedeutung sind
  3. -T bedeutet, dass Sie mithilfe der Windows-Authentifizierung eine Verbindung zu SQL Server herstellen. Wenn Sie mithilfe der SQL Server-Authentifizierung eine Verbindung herstellen möchten, verwenden Sie -U -P
  4. Dies zeigt auch, 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" erstellt. Dies ist ein angegebener Zielordner

Alternativ, Sie können den BCP über den Befehl Eingabeaufforderung ausführen und den folgenden Befehl in den Befehl Eingabeaufforderung eingeben. Beide Vorgänge führen dieselbe Aktivität aus, aber ich mag die oben erwähnte Methode, da dies beim Öffnen eines Befehls Eingabeaufforderung und die Option Speichern ist Art.

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

enter image description here

11
Tufan Chand

Methode 1:

Wenn Sie sich nur mit Daten in den Tabellen befassen und diese lokal in derselben Datenbank und demselben Server verwendet werden sollen, können Sie die folgende Abfrage verwenden, um eine Sicherung ausgewählter Tabellen zu erstellen:

SELECT * INTO newtable1
FROM originalTable1

--- Für Tabelle 2

SELECT * INTO newtable2
FROM originalTable2

und so weiter ... für n Anzahl von Tabellen

Diese Anweisung erstellt die Tabellen newtable1, newtable1, .., sodass Sie sie nicht zuvor erstellen müssen.

Hinweis * Diese Methode führt die Sicherung recht schnell durch, der Hauptnachteil besteht jedoch darin, dass die Schlüssel, Indizes und Einschränkungen der Tabelle nicht übertragen werden und die Sicherung in der Datenbank nicht außerhalb einer Datei gespeichert wird

Methode 2:

Wenn Sie eine Tabelle für eine Disaster Recovery-Lösung oder zur Verhinderung von Datenverlust auf einem anderen Server sichern möchten, können Sie die Tabelle mit der Option "Skripte generieren" 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 -> Skripte 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 Tabellen-/Ansichtsoptionen sehen. Wir möchten, dass Folgendes zutrifft: Überprüfen Sie Einschränkungen, Skriptdaten, Fremdschlüssel, Primärschlüssel, Trigger und eindeutige Schlüssel. (Oder Sie können natürlich wählen, was Sie brauchen). Wählen Sie Weiter und es wird der Bildschirm Objekttypen auswählen angezeigt

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

Methode 3:

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

9
KASQLDBA

Mit der Bulk-Export-Funktion von SSMS ist hier die beste und einfachste Methode

SQL Server-Import- und Exportassistent: Der SQL Server-Import- und Exportassistent bietet eine grafische Benutzeroberfläche für ein SQL Server Integration Services-Paket (SSIS). Nach der Erstellung kann das Paket automatisiert werden, um nach einem Zeitplan ausgeführt zu werden. Es kann mithilfe von SQL Server Data Tools (SSDT) ​​weiter konfiguriert und geändert werden.

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

(enter image description here

1
Sayyed Dawood

Sie können bestimmte Tabellen nicht in einer .bak - Datei sichern, sie in csv exportieren oder skripten oder sie mit bcp in eine Datei einfügen.

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

Siehe Dateien und Dateigruppen sichern für die Dokumentation.

Wenn Sie beispielsweise bestimmte Dateien oder Dateigruppen mit T-SQL sichern möchten, können Sie diese verwenden (ü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

Aufbauend auf Methode 1 aus der Antwort von KASQLDBA:

Erstellen Sie eine separate Datenbank für die gesicherte Kopie der Tabellen. Ändern Sie die von KASQLDBA bereitgestellte Abfrage so, dass Sie aus Ihrer ursprünglichen Tabelle 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 in für jede erforderliche Tabelle ausführen. Wenn Sie möchten, dass Indizes und andere Objekte verfügbar sind, können Sie diese in Ihrer neuen Datenbank erstellen und die Tabellen abschneiden, bevor Sie sie erneut füllen. Wenn Sie das Abschneiden bevorzugen, müssen Sie anstelle von select in Einfügeanweisungen einfügen.

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

1
Gary