poniedziałek, 31 października 2016

SQL Server 2014SP2 - Snapshoty baz danych

Snapshoty pozwalają na zapisanie stanu bazy danych w momencie jego tworzenia. Możemy wykonać snapshot na przykład przed wykonaniem zmian w bazie danych cechujących się ryzykiem - np. aktualizacją struktury bazy danych w związku z nową wersją produktu, który wykorzystuje bazę danych. 

Aby utworzyć snapshot bazy danych:
1. W SQL Server Managament Studio klikamy prawym przyciskiem na interesującą nas bazę danych i wybieramy Proporties, po czym przechodzimy na stronę FILES celem sprawdzenia nazwy pliku danych (w moim przypadku jest to M03).

  
 2.  Aby wykonać snapshot korzystamy z polecenia:

CREATE DATABASE nowy ON
( NAME = M03, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL12.TESTOWA01\MSSQL\DATA\nowy-snapszot.ss'  )
AS SNAPSHOT OF M03;
GO
gdzie:
  • nowy  - oznacza nazwę snapshostu (wybieramy ją wg uznania, to może być np. data wykonania)
  • NAME = M03 oznacza nazwę pliku bazy danych - jest to wartość ustalona w punkcie 1
  • C:\Program Files\Microsoft SQL Server\MSSQL12.TESTOWA01\MSSQL\DATA\nowy-snapszot.ss - jest to ścieżka pliku, do którego ma zostać zapisany snapshot
  • AS SNAPSHOT OF M03 - M03 jest to nazwa bazy danych, której snapshost chcemy wykonać
 Aby sprawdzić dostępne snapshosty możemy skorzystać z dwóch możliwości:
1. W SQL Server Managament Studio rozwijamy gałąź  Database Snapshots


2.  Korzystamy z widoku sys.databases (tj. select * from sys.databases) w celu określenia database_id bazy danych, której snapshot wykonaliśmy i wykorzystania go w poniższym zapytaniu


select a.name, a.database_id, a.source_database_id, a.create_date
from sys.databases as a
where a.source_database_id is not null
and a.source_database_id='7'


Aby przywrócić bazę danych do stanu, w którym został utworzony snapshot, korzystamy z następującego polecenia:

use [master]
go
RESTORE DATABASE M03 FROM DATABASE_SNAPSHOT = 'nowy'
gdzie M03 to nazwa bazy danych, której snapshost chcemy przywrócić, a nowy to nazwa snapshotu, z którego chcemy skorzystać

Najczęściej zadawane pytania:
Q: Ile miejsca powinniśmy przeznaczyć na snapshot?
A: Snapshot ostatecznie nie powinien zająć więcej miejsca niż baza danych.

Q: Czy zamiast kopii bezpieczeństwa mogę wykonywać snapshot bazy danych?
A: Niezależnie od snapshotów powinniśmy mieć opracowaną i wdrożoną politykę tworzenia kopii bezpieczeństwa baz danych i ich testowania na wypadek awarii. Snapshoty mogą towarzyszyć kopiom, ale nie zastępować ich.

Q: Czy w każdej edycji SQL Server mogę wykonać snapshot bazy danych?
A: Jest to możliwe tylko w edycji Enterprise.

Q: Jak usunąć snapshost bazy danych?
A: Korzystamy z polecenia:

DROP DATABASE nowy ;
gdzie nowy oznacza nazwę snapshotu

Brak komentarzy:

Prześlij komentarz