Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Det enda sättet att skapa en SQL Server-databasögonblicksbild är att använda Transact-SQL. SQL Server Management Studio stöder inte skapandet av databasögonblicksbilder.
Förutsättningar
Källdatabasen, som kan använda valfri återställningsmodell, måste uppfylla följande krav:
Serverinstansen måste köra en utgåva av SQL Server som stöder databasögonblicksbild. Information om stöd för databasögonblicksbilder i SQL Server finns i Utgåvor och funktioner som stöds i SQL Server 2022.
Källdatabasen måste vara online, såvida inte databasen är en speglingsdatabas i en databasspeglingssession.
Om du vill skapa en databasögonblicksbild på en speglingsdatabas måste databasen vara i det synkroniserade speglingstillståndet.
Källdatabasen kan inte konfigureras som en skalbar delad databas.
Innan SQL Server 2019 (15.x) kunde källdatabasen inte innehålla en
MEMORY_OPTIMIZED_DATA
filgrupp. Stöd för minnesinterna databasögonblicksbilder har lagts till i SQL Server 2019 (15.x).
Viktig
Information om andra viktiga överväganden finns i Database Snapshots (SQL Server).
Rekommendationer
I det här avsnittet beskrivs följande metodtips:
- Bästa praxis: namnge databasögonblicksbilder
- Bästa praxis: begränsa antalet ögonblicksbilder av databaser
- Bästa praxis: klientanslutningar till en databassnapshot
Bästa praxis: namnge databasögonblicksbilder
Innan du skapar ögonblicksbilder är det viktigt att tänka på hur du namnger dem. Varje databasögonblicksbild kräver ett unikt databasnamn. För administrativ enkelhet kan namnet på en ögonblicksbild innehålla information som identifierar databasen, till exempel:
Namnet på källdatabasen.
En indikation på att det nya namnet är för en snapshot.
Skapandedatum och tid för ögonblicksbilden, ett sekvensnummer eller annan information, till exempel tid på dagen, för att skilja sekventiella ögonblicksbilder på en viss databas.
Överväg till exempel en serie ögonblicksbilder för AdventureWorks2022
-databasen. Tre dagliga ögonblicksbilder skapas med 6 timmars mellanrum mellan 06.00 och 18.00, baserat på en 24-timmarsklocka. Varje daglig ögonblicksbild sparas i 24 timmar innan den tas bort och ersätts av en ny ögonblicksbild med samma namn. Varje namn på ögonblicksbilden anger timmen, men inte dagen:
AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800
Om skapandetiden för dessa dagliga ögonblicksbilder varierar från dag till dag kan en mindre exakt namngivningskonvention vara att föredra, till exempel:
AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening
Bästa praxis: begränsa antalet ögonblicksbilder av databaser
När du skapar en serie ögonblicksbilder över tid avbildas sekventiella ögonblicksbilder av källdatabasen. Varje snapshot bevaras tills den uttryckligen tas bort. Eftersom varje ögonblicksbild fortsätter att växa när de ursprungliga sidorna uppdateras kanske du vill spara diskutrymme genom att ta bort en äldre ögonblicksbild när du har skapat en ny ögonblicksbild.
Not
Om du vill återgå till en ögonblicksbild av databasen måste du ta bort andra ögonblicksbilder från databasen.
Bästa praxis: klientanslutningar till en databasögonblicksbild
Om du vill använda en databasögonblicksbild måste klienterna veta var de hittar den. Användare kan läsa från en databasögonblicksbild medan en annan skapas eller tas bort. Men när du ersätter en ny ögonblicksbild med en befintlig måste du omdirigera klienter till den nya ögonblicksbilden. Användare kan ansluta till en databasögonblicksbild manuellt med SQL Server Management Studio eller Azure Data Studio. För att stödja en produktionsmiljö bör du dock skapa en programmatisk lösning som transparent dirigerar rapportskrivningsklienter till den senaste databasögonblicksbilden av databasen.
Behörigheter
Alla användare som kan skapa en databas kan skapa en ögonblicksbild av databasen. Men om du vill skapa en ögonblicksbild av en speglingsdatabas måste du vara medlem i sysadmin fast serverroll.
Skapa en ögonblicksbild av databasen med hjälp av Transact-SQL
Baserat på källdatabasens aktuella storlek kontrollerar du att du har tillräckligt med diskutrymme för att lagra databasögonblicksbilden. Den maximala storleken på en databasögonblicksbild är storleken på källdatabasen när ögonblicksbilden skapas. För mer information, se Visa storleken på glesfilen för en databassnapshot (Transact-SQL).
Utfärda en
CREATE DATABASE
-instruktion för filerna med hjälp avAS SNAPSHOT OF
-satsen. För att skapa en ögonblicksbild måste du ange det logiska namnet på varje databasfil i källdatabasen. Syntaxen är följande:CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name , FILENAME = 'os_file_name' ) [ , ...n ] AS SNAPSHOT OF source_database_name [;]
Argumenten är följande:
Argument Beskrivning database_snapshot_name
Namnet på ögonblicksbilden som du vill återställa databasen till. logical_file_name
Det logiska namn som källdatabasen använder i SQL Server när du refererar till filen. os_file_name
Sökvägen och filnamnet som används av operativsystemet när du skapar filen. source_database_name
Källdatabasen. En fullständig beskrivning av den här syntaxen finns i CREATE DATABASE (SQL Server Transact-SQL).
Not
När du skapar en ögonblicksbild av databasen tillåts inte loggfiler, offlinefiler, återställning av filer och defunct-filer i
CREATE DATABASE
-instruktionen.
Exempel
Det .ss
tillägget som används i dessa exempel är för enkelhetens skull och krävs inte. I databaser som innehåller flera filer måste alla filer anges i enlighet med syntaxen. Filgrupper har inte angetts.
A. Skapa en ögonblicksbild av AdventureWorks-databasen
Det här exemplet skapar en databasögonblicksbild på AdventureWorks
-databasen. Ögonblicksbildens namn, AdventureWorks_dbss_1800
, och filnamnet på dess glesa fil, AdventureWorks_data_1800.ss
, anger skapandetiden 18.00 (1800 timmar).
CREATE DATABASE AdventureWorks_dbss1800 ON (
NAME = AdventureWorks,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss'
) AS SNAPSHOT OF AdventureWorks;
GO
B. Skapa en ögonblicksbild i försäljningsdatabasen
I det här exemplet skapas en ögonblicksbild av databasen, sales_snapshot1200
, på Sales
-databasen, som är samma exempeldatabas från Skapa en databas med filgrupper i CREATE DATABASE.
--Create sales_snapshot1200 as snapshot of the Sales database:
CREATE DATABASE sales_snapshot1200 ON (
NAME = SPri1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'
),
(
NAME = SPri2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'
),
(
NAME = SGrp1Fi1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'
),
(
NAME = SGrp1Fi2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'
),
(
NAME = SGrp2Fi1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'
),
(
NAME = SGrp2Fi2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss'
) AS SNAPSHOT OF Sales;
GO