Ich möchte eine Sicherungskopie bestimmter in meiner Datenbank verfügbarer Tabellen in einer .bak
Datei erstellen, und all dies sollte mithilfe eines T-SQL-Skripts erfolgen.
Ich möchte eine Sicherungskopie bestimmter in meiner Datenbank verfügbarer Tabellen in einer .bak
Datei erstellen, und all dies sollte mithilfe eines T-SQL-Skripts erfolgen.
Antworten:
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
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
Hinweis -
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
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.
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
Wählen Sie Ihre Datenbank aus der Liste aus, deren Tabellen gesichert werden müssen
Der nächste Bildschirm, der angezeigt wird, sind die Skriptoptionen.
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
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.
Sie können bestimmte Tabellen nicht in eine .bak
Datei sichern. Sie können sie in eine CSV-Datei exportieren, sie per Skript ausgeben oder zum Speichern bcp
in einer Datei verwenden.
Wenn Sie bestimmte Tabellen sichern möchten (und diese immer gleich sind), können Sie sie in eine separate file group
Gruppe 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
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.
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.
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)
Sichern Sie eine einzelne Tabelle mit ihren Daten aus einer Datenbank in SQL Server 2008:
SELECT * INTO [dbo].[tbl_NewTable]
FROM [dbo].[tbl_OldTable]