sql >> Database >  >> RDS >> Sqlserver

Snapshots van SQL Server-database -4

Hallo

Ik zal in dit artikel doorgaan met het uitleggen van database-snapshots in SQL Server.

Lees eerdere artikelen voor dit bericht.

Snapshots van SQL Server-database -1

Snapshots van SQL Server-database -2

Snapshots van SQL Server-database -3

Deze fout is erg eng en financieel verlies voor de productiedatabase.

We zullen de Snapshot-database gebruiken om van deze fout terug te keren. We gebruiken de AWBuildVersion-tabel van de Snapshot-database om de AWBuildVersion-tabel in de AdventureWorks-database te maken. Hiervoor gebruiken we Select * into command. De schermafbeelding na het uitvoeren van het script is als volgt. Zoals aangegeven door de rode lijn, wordt Dropped Table teruggestuurd naar de Brondatabase met zijn gegevens.

Laten we nog een soortgelijk voorbeeld doen in termen van begrijpelijker zijn. Laten we de gegevens van een tabel verwijderen en deze opnieuw uit de Snapshot-database retourneren. Zoals uiteengezet in Afbeelding 1.1 hieronder, wordt de BillOfMaterials-tabel onder aan de ProductionWorks-database verwijderd uit de AdventureWorks-database. Wanneer we tegelijkertijd het aantal selecteren selecteren, wordt het 0-record opgevraagd zoals weergegeven in de onderstaande afbeelding.

We gebruiken de Snapshot-database opnieuw om van deze fout terug te keren. Zoals in 2.1 hierboven, voegen we hetzelfde schema en dezelfde tabel van de Snapshot-database in de overeenkomstige tabel in de brondatabase in. Op dezelfde manier wordt hetzelfde aantal regelrecords ingevoegd als weergegeven in afbeelding 2.2 toen we Select Count opvroegen.

Laten we ten slotte een beheerdersfout maken vanuit de Snapshot-database, en deze keer zullen we de brondatabase herstellen vanuit de Snapshot-database. De snapshot van de AdventureWorks-database keert dus terug naar de oorspronkelijke staat. Ik verwijder de gegevens van de BillOfMaterials-tabel uit het Productieschema en tegelijkertijd liet ik de tabel SalesOrderDetail onder het Sales-schema vallen. De schermafbeelding is als volgt. Omdat de gegevens van de BillOfMaterials-tabel onderaan het Productieschema zijn verwijderd, verschijnt de tabel SalesOrderDetail niet omdat deze is verwijderd.

We hebben veel wijzigingen aangebracht in de brondatabase, we hebben gezegd dat deze wijzigingen altijd naar Sparse File worden geschreven. De volgende afbeelding toont de definitieve versie van het Sparse-bestand. Hoewel de oorspronkelijke grootte 1 niet is gewijzigd, is de oorspronkelijke Sparse-bestandsnummer 2 toegenomen. De reden hiervoor is, zoals ik al zei, dat alle wijzigingen die in de Source-database zijn aangebracht, hier worden geschreven. Dus wanneer de gebruiker gewijzigde gegevens leest, leest hij uit het Sparse-bestand. Als de gebruiker ongewijzigde gegevens opvraagt, wordt deze uit de brondatabase gelezen.

Laten we nu teruggaan naar Snapshot.

SQL Server 2017 Database Snaphot Restore code

restore database  AdventureWorks from database_snapshot='AdventureWorksSnaphot'

We kunnen alle verwijderde en verwijderde tabellen opvragen na het herstellen van Snapshot zoals weergegeven in bovenstaande afbeelding.


  1. Waarom is er een netwerkgerelateerde of instantiespecifieke fout opgetreden bij het tot stand brengen van een verbinding met SQL Server?

  2. Hoe wijzig ik de opmaak voor mijn retourwaarden in deze functie?

  3. Waarde ophalen op basis van het maximum van een andere kolom gegroepeerd op een andere kolom

  4. Hoe een MySQL-database back-uppen en herstellen?