Hinzufügen zu dem, was @dmg gesagt hat. Das Sichern einer einzelnen Tabelle kann problematisch sein. RI beiseite, wenn zum Beispiel Ihre "große" Tabelle 90% der Datenbank ausmacht, hilft Ihnen das Sichern der Tabelle nicht wirklich viel. Wenn Sie SQL 2008 verwenden, stellen Sie sicher, dass Sie es sind compressing your backups
. Sie können einen angemessenen Komprimierungsprozentsatz erzielen und möglicherweise tatsächlich eine vollständige Sicherung durchführen.
Eine andere Möglichkeit besteht darin, ein transaction log
Backup zu erstellen. Dies ist, was ich normalerweise mache, wenn ich mit einer großen Datenbank arbeite, bevor ich eine Änderung vornehme. Sie sollten immer viel kleiner sein (insbesondere wenn Sie häufige Sicherungen durchführen) als die vollständige Sicherung. Und wird noch kleiner, wenn Sie sie komprimieren.
Das funktioniert jetzt nicht, wenn Ihre Datenbank auf eingestellt ist simple recovery
. In diesem Fall besteht Ihre einzige andere herkömmliche Sicherungsoption darin, dies zu prüfen differential backups
. Diese können tatsächlich ziemlich groß werden. Wenn Ihre letzte vollständige Sicherung jedoch kürzlich durchgeführt wurde oder Sie nur einen kleinen Prozentsatz der Datenbank ändern, ist dies möglicherweise eine praktikable Option für Sie. Wenn Ihre Datenbank jedoch auf eingestellt ist, müssen simple
Sie sich möglicherweise vor Ihrer Änderung keine Sorgen darüber machen, ob sie wiederhergestellt werden kann.
Last but not least (SQL 2005 oder höher) gibt es die OUTPUT
Klausel. Mit dieser praktischen kleinen Klausel können Sie die Änderungen ausgeben, die Sie während Ihres Befehls vorgenommen haben. Sie können in einer Tabellenvariablen oder Tabelle gespeichert werden. Grundsätzlich geben sie Ihnen Zugriff auf die INSERTED
und DELETED
Tabellen, die Sie normalerweise nur in Triggern sehen. Ich bewege Sie können Ihre Änderungen (vorher und nachher) in einer anderen Tabelle sichern. Auf diese Weise sichern Sie nur die geänderten Zeilen und Spalten. Stellen Sie sicher, dass Sie natürlich auch Ihren Primärschlüssel angeben. Hier ist der BOL-Eintrag . Und hier ist ein Beispiel von BOL. In diesem Beispiel werden nur 4 Spalten aus 10 Datenzeilen gespeichert. Selbst wenn die Tabelle zufällig 5 oder sogar 10 mil Zeilen umfasst.
USE AdventureWorks;
GO
DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25
OUTPUT INSERTED.EmployeeID,
DELETED.VacationHours,
INSERTED.VacationHours,
INSERTED.ModifiedDate
INTO @MyTableVar;