Vytvoření snímku databáze (Transact-SQL)
platí pro:SQL Server
Jediným způsobem vytvoření snímku databáze SQL Serveru je použití jazyka Transact-SQL. SQL Server Management Studio nepodporuje vytváření snímků databáze.
Požadavky
Zdrojová databáze, která může používat libovolný model obnovení, musí splňovat následující požadavky:
Instance serveru musí mít spuštěnou edici SQL Serveru, která podporuje snímek databáze. Informace o podpoře snímků databáze v SYSTÉMU SQL Server naleznete v tématu Edice a podporované funkce systému SQL Server 2022.
Zdrojová databáze musí být online, pokud databáze není zrcadlovou databází v relaci zrcadlení databáze.
Chcete-li vytvořit snímek databáze na zrcadlové databázi, musí být databáze v synchronizovaném stavu zrcadlení.
Zdrojovou databázi nejde nakonfigurovat jako škálovatelnou sdílenou databázi.
Před SQL Serverem 2019 (15.x) nemohla zdrojová databáze obsahovat skupinu souborů
MEMORY_OPTIMIZED_DATA
. V SQL Serveru 2019 (15.x) byla přidána podpora snímků databáze v paměti.
Důležitý
Informace o dalších důležitých aspektech naleznete v tématu Database Snapshots (SQL Server).
Doporučení
Tato část popisuje následující osvědčené postupy:
- osvědčený postup : pojmenování snímků databáze
- osvědčený postup: Omezení počtu snímků databáze
- osvědčený postup : Připojení klientů ke snímku databáze
Osvědčený postup: Pojmenování snímků databáze
Před vytvořením snímků je důležité zvážit, jak je pojmenovat. Každý snímek databáze vyžaduje jedinečný název databáze. Pro usnadnění správy může název snímku obsahovat informace, které identifikují databázi, například:
Název zdrojové databáze.
Naznačuje, že nový název je určen pro snímek.
Datum a čas vytvoření snímku, pořadové číslo nebo jiné informace, například čas dne, k rozlišení sekvenčních snímků v dané databázi.
Představte si například řadu snímků pro AdventureWorks2022
databázi. Tři denní snímky se vytvářejí v 6hodinových intervalech mezi 6:00 a 18:00 na základě 24hodinového formátu. Každý denní snímek se uchovává po dobu 24 hodin před vyřazením a nahrazením novým snímkem se stejným názvem. Každý název snímku označuje hodinu, ale ne den:
AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800
Pokud se doba vytváření těchto denních snímků liší od dne do dne, může být vhodnější méně přesná konvence pojmenování, například:
AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening
Osvědčený postup: Omezení počtu snímků databáze
Vytvoření řady snímků v průběhu času zachycuje sekvenční snímky zdrojové databáze. Každý snímek zůstane trvalý, dokud se explicitně nezahodí. Vzhledem k tomu, že každý snímek bude dál růst, protože se aktualizují původní stránky, můžete po vytvoření nového snímku ušetřit místo na disku odstraněním staršího snímku.
Poznámka
Pokud se chcete vrátit k snímku databáze, musíte z této databáze odstranit všechny další snímky.
Osvědčený postup: Připojení klientů ke snímku databáze
Pokud chcete použít snímek databáze, musí klienti vědět, kde ho najít. Uživatelé mohou číst z jednoho snímku databáze během vytváření nebo odstranění jiné databáze. Když ale nahradíte nový snímek existujícím snímkem, musíte klienty přesměrovat na nový snímek. Uživatelé se můžou ručně připojit ke snímku databáze pomocí aplikace SQL Server Management Studio nebo Azure Data Studia. Pokud ale chcete podporovat produkční prostředí, měli byste vytvořit programátorské řešení, které transparentně směruje klienty pro vytváření sestav na nejnovější momentku databáze.
Dovolení
Každý uživatel, který může vytvořit databázi, může vytvořit snímek databáze; Pokud však chcete vytvořit snímek zrcadlové databáze, musíte být členem správce systému pevné role serveru.
Vytvoření snímku databáze pomocí Transact-SQL
Na základě aktuální velikosti zdrojové databáze se ujistěte, že máte dostatek místa na disku pro uložení snímku databáze. Maximální velikost snímku databáze je velikost zdrojové databáze při vytváření snímku. Další informace najdete v tématu Zobrazení velikosti zhuštěného souboru snímku databáze (Transact-SQL).
Pomocí klauzule
AS SNAPSHOT OF
vydejte prohlášeníCREATE DATABASE
o souborech. Vytvoření snímku vyžaduje zadání logického názvu každého databázového souboru zdrojové databáze. Syntaxe je následující:CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name , FILENAME = 'os_file_name' ) [ , ...n ] AS SNAPSHOT OF source_database_name [;]
Argumenty jsou následující:
Argument Popis database_snapshot_name
Název snímku, na který chcete vrátit databázi. logical_file_name
Logický název, který zdrojová databáze používá na SQL Serveru při odkazování na soubor. os_file_name
Cesta a název souboru používaný operačním systémem při vytváření souboru. source_database_name
Zdrojová databáze. Úplný popis této syntaxe najdete v tématu CREATE DATABASE (SQL Server Transact-SQL).
Poznámka
Při vytváření snímku databáze nejsou v příkazu
CREATE DATABASE
povoleny protokolové soubory, offline soubory, soubory k obnovení a nefunkční soubory.
Příklady
Rozšíření .ss
použité v těchto příkladech je pro usnadnění a nevyžaduje se. V databázích obsahujících více souborů je nutné zadat všechny soubory v souladu se syntaxí. Nejsou zadány skupiny souborů.
A. Vytvoření snímku v databázi AdventureWorks
Tento příklad vytvoří snímek databáze v databázi AdventureWorks
. Název snímku, AdventureWorks_dbss_1800
, a název jeho komprimovaného souboru, AdventureWorks_data_1800.ss
, označují čas vytvoření 18:00 (1800 hodin).
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. Vytvoření snímku v databázi Sales
Tento příklad vytvoří snímek databáze sales_snapshot1200
v databázi Sales
, což je stejná ukázková databáze z Vytvoření databáze, která obsahuje skupiny souborů v 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