Freitag, 29. März 2024  |  | anmelden

 

Was sind Datenbank Snapshots?

Datenbank Snapshots sind konsistenten, read-only Datenbanken die einen definierten Zeitpunkt abbilden. Ein solcher Snapshot könnte z.B. für ein Berichtssystem verwendet werden.

Ein Datenbank Snapshot beinhaltet alle Seiten die seit der Erstellung des Snapshots verändert wurden. Zum Erstellungszeitpunkt ist die Snapshot Datenbank also leer. Werden Seiten in der Quell Datenbank verändert, so werden diese vor der Änderung in die Snapshot Datenbank kopiert. Microsoft bezeichnet dies als "copy-on-write". Hierbei ist es natürlich egal wie häufig die Seite geändert wird. Es gilt ja lediglich den Zustand zum Erstellungszeitpunkt des Snapshots sicherzustellen. Wird eine Seite niemals geändert so wird sie auch nicht in die Snapshot Datenbank kopiert.

Beim Zugriff auf die Snapshot Datenbank werden die seit der Erstellung des Snapshots geänderten Seiten aus der Snapshot Datenbank gelesen. Alle anderen Seiten werden aus der Quell Datenbank gelesen. Für den Benutzer erfolgt dieser Zugriff vollkommen transparent.

Erstellen eines Snapshots

Ein Snapshot wird über den Befehl  CREATE DATABASE  mit dem Zusatz  AS SNAPSHOT  erzeugt. Das folgende Beispiel zeigt die Erstellung eines Snapshots für die AdventureWorks Datenbank:

CREATE DATABASE AdventureWorks_Snapshot_2300
ON
(
NAME = AdventureWorks_Data,
FILENAME = D:\Snapshots\AdventureWorks_Data.mdf
)
AS SNAPSHOT OF AdventureWorks

Eine Datenbank kann mehrere Snapshots besitzen. Diese können z.B. auch über den SQL Server Agent erzeugt werden. Der Name des Snapshots sollte so gewählt werden das die Snapshots gut unterschieden werden können, z.B. durch Uhrzeit und / oder Tagesdatum.

Einschränkungen

Es gibt bei der Nutzung der Snapshots ein paar Einschränkungen die beachtet werden sollten / müssen:

  • Es können keine Snapshots der Systemdatenbanken MASTER, MODEL oder TEMPDB erstellt werden
  • Snapshots sind read-only Datenbanken. Eine Modifikation der Inhalte ist nicht möglich
  • Snapshots können nicht gesichert und damit auch nicht wiederhergestellt werden.
  • Snapshots können nicht angehangen ("Attached") oder getrennt ("Detached") werden
  • Snapshots setzen eine NTFS Partition voraus
  • Alle Snapshots einer Datenbank müssen gelöscht werden bevor die Datenbank gelöscht werden kann
  • Zugriffsrechte auf Objekte im Snapshot lassen sich nicht verändern
  • Der Speicherort der Datendateien der Quell Datenbank kann nicht geändert werden
  • Keine Verwaltung für Volltext Katalog in einer Snapshot Datenbank

Beispiel

Kopieren Sie die Daten der Tabelle HumanResources.Employee in der AdventureWorks Datebank:

USE AdventureWorks
SELECT * INTO HumanResources.Employee_Temp FROM HumanResources.Employee
GO

Erstellen Sie ein Snapshot der AdventureWorks Datenbank:

CREATE DATABASE AdventureWorks_Snapshot
ON
(
NAME = AdventureWorks_Data,
FILENAME = C:\Snapshots\AdventureWorks_Data.mdf
)
AS SNAPSHOT OF AdventureWorks

Lassen Sie sich alle Zeilen der Employee_Temp Tabelle aus der Snapshot Datenbank anzeigen:

USE AdventureWorks_Snapshot
SELECT * FROM HumanResources.Employee_Temp
GO

Da die Daten nach der Snapshot Erstellung nicht geändert wurden werden die 290 Zeilen der Tabelle aus der AdventureWorks Datenbank gelesen und nicht aus dem Snapshot.

Versuchen Sie die Inhalte der Emplyoee_Temp Tabelle in der Snapshot Datenbank zu ändern:

USE AdventureWorks_Snapshot
UPDATE HumanResources.Employee_Temp
SET LoginID = 'Secret' + LoginID
GO

Da die Snapshot Datenbank keine Änderungen zulässt wird eine Fehlermeldung ausgegeben: "Failed to update database "AdventureWorks_Snapshot" because the database is readonly"

Überprüfen Sie die Größe der Datendatei im Verzeichnis C:\Snapshots mit dem Windows Explorer. Vergleichen Sie die Werte Size und Size on disk. Der Wert Size entspricht der Größe der Datendatei der Quell Datenbank, der Wert Size on disk ist hingegen deutlich kleiner!

 

Snapshot_1.png

 

Ändern Sie die Daten der Employee_Temp Tabelle in der Quell Datenbank:

USE AdventureWorks_Snapshot
UPDATE HumanResources.Employee_Temp
SET LoginID = 'Secret' + LoginID
GO

Lassen Sie sich die Daten der Employee_Temp Tabelle in der Quell Datenbank anzeigen:

USE AdventureWorks
SELECT * FROM HumanResources.Employee_Temp
GO

Lassen Sie sich die Daten der Employee_Temp Tabelle in der Snapshot Datenbank anzeigen:

USE AdventureWorks_Snapshot
SELECT * FROM HumanResources.Employee_Temp
GO

Kontrollieren Sie die Größe der Datendatei im Verzeichnis C:\Snapshots mit dem Windows Explorer:

Snapshot_2.png

Löschen Sie die Employee_Temp Tabelle in der Quell Datenbank:

USE AdventureWorks
DROP TABLE HumanResources.Employee_Temp
GO

Löschen Sie die Snapshot Datenbank:

USE MASTER
DROP DATABASE AdventureWorks_Snapshot
GO

 

>
Nonetheless, each and every product can be a qualified omega replica sale. I��ve recently been advised simply by several cartier replica sale observe fix individuals who they will favor taking care of replica watches sale motions if you are quick and easy to have elements regarding. Rolex replica uk can an excellent career with building a world-class rolex replica uk mass produced movements and watch. Merely received phrase the fresh panerai replica sale (mix of metallic and also rare metal) panerai replica sale observe images can, in reality, hold the glidelock deployments with the fresh hublot replica uk timepieces.