Créer une base de données instantané (Transact-SQL)
S’applique à :SQL Server
La seule façon de créer une base de données SQL Server instantané consiste à utiliser Transact-SQL. SQL Server Management Studio ne prend pas en charge la création de instantané de base de données.
Prérequis
La base de données source, qui peut utiliser n'importe quel mode de récupération, doit respecter les conditions préalables suivantes :
L’instance de serveur doit exécuter une édition de SQL Server qui prend en charge les instantané de base de données. Pour plus d’informations sur la prise en charge des instantané de base de données dans SQL Server, consultez Éditions et fonctionnalités prises en charge de SQL Server 2022.
La base de données source doit être en ligne, à moins que la base de données soit une base de données miroir au sein d'une session de mise en miroir de bases de données.
Pour créer une capture instantanée de base de données dans une base de données miroir, la base de données doit être à l’ état de mise en miroirsynchronisée.
La base de données source ne peut pas être configurée en tant que base de données partagée évolutive.
Avant SQL Server 2019 (15.x), la base de données source n’a pas pu contenir de
MEMORY_OPTIMIZED_DATA
groupe de fichiers. La prise en charge des instantané de base de données en mémoire a été ajoutée dans SQL Server 2019 (15.x).
Important
Pour plus d’informations sur d’autres considérations importantes, consultez Captures instantanées de base de données (SQL Server).
Recommandations
Cette section présente les recommandations suivantes :
- Bonne pratique : nommer des instantané de base de données
- Bonne pratique : limiter le nombre de instantané de base de données
- Bonne pratique : connexions clientes à une base de données instantané
Bonne pratique : nommer des instantané de base de données
Avant de créer des instantané, il est important de déterminer comment les nommer. Chaque instantané de base de données nécessite un nom de base de données unique. Pour faciliter l'administration, le nom de l'instantané peut intégrer des informations identifiant la base de données, telles que :
Nom de la base de données source.
Une indication que le nouveau nom désigne un instantané.
La date et l'heure de création de l'instantané, un numéro de séquence ou d'autres informations pour distinguer les instantanés consécutifs sur une base de données spécifique.
Par exemple, envisageons une série d'instantanés de la base de données AdventureWorks2022
. Trois instantané quotidiennes sont créées à intervalles de 6 heures entre 6 H et 18 h, selon une horloge de 24 heures. Chaque instantané quotidien est conservé pendant 24 heures avant d'être supprimé et remplacé par un nouvel instantané du même nom. Chaque nom instantané indique l’heure, mais pas le jour :
AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800
Si l'heure de création de ces instantanés quotidiens varie selon les jours, une convention de dénomination moins précise peut être préférable, par exemple :
AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening
Bonne pratique : limiter le nombre de instantané de base de données
La création d'une série d'instantanés dans le temps fournit des instantanés consécutifs de la base de données source. Chaque instantané persiste jusqu’à ce qu’elle soit explicitement supprimée. Chaque instantané continuant à grandir au fur et à mesure que les pages d'origine sont mises à jour, vous voudrez peut-être conserver de l'espace disque en supprimant un instantané plus ancien après en avoir créé un nouveau.
Remarque
Pour revenir à une capture instantanée de base de données, vous devez supprimer toutes les autres captures instantanées de cette base de données.
Bonne pratique : connexions clientes à une base de données instantané
Pour utiliser un instantané de base de données, les clients ont besoin de savoir où il se trouve. Les utilisateurs peuvent lire un instantané de base de données pendant qu'un autre instantané est créé ou supprimé. Cependant, lorsque vous substituez un nouvel instantané de base de données à un instantané existant, vous devez rediriger les clients vers le nouvel instantané. Les utilisateurs peuvent se connecter manuellement à une base de données instantané avec SQL Server Management Studio ou Azure Data Studio. Cependant, pour prendre en charge un environnement de production, vous devez créer une solution de programmation qui dirige de façon transparente les clients écrivant des rapports vers le dernier instantané de la base de données.
Autorisations
Tout utilisateur ayant la possibilité de créer une base de données peut également créer un instantané de base de données. Toutefois, pour créer un instantané d’une base de données miroir, vous devez être membre du rôle serveur fixe sysadmin .
Créer une base de données instantané à l’aide de Transact-SQL
En vous basant sur la taille actuelle de la base de données source, vérifiez que votre disque dispose de suffisamment d'espace pour en accueillir un instantané. La taille maximale d'un instantané est la taille de la base de données source au moment où l'instantané est créé. Pour plus d’informations, consultez Afficher la taille du fichier partiellement alloué d’un instantané de base de données (Transact-SQL).
Émettez une
CREATE DATABASE
instruction sur les fichiers à l’aide de laAS SNAPSHOT OF
clause. Pour créer un instantané, vous devez spécifier le nom logique de chaque fichier de la base de données source. La syntaxe est la suivante :CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name , FILENAME = 'os_file_name' ) [ , ...n ] AS SNAPSHOT OF source_database_name [;]
Les arguments sont les suivants :
Argument Description database_snapshot_name
Nom du instantané auquel vous souhaitez rétablir la base de données. logical_file_name
Nom logique de la base de données source utilisée dans SQL Server lors du référencement du fichier. os_file_name
Chemin d’accès et nom de fichier utilisé par le système d’exploitation lorsque vous créez le fichier. source_database_name
Base de données source. Pour obtenir une description complète de cette syntaxe, consultez CREATE DATABASE (SQL Server Transact-SQL).
Remarque
Lorsque vous créez une base de données instantané, les fichiers journaux, les fichiers hors connexion, la restauration des fichiers et les fichiers obsolètes ne sont pas autorisés dans l’instruction
CREATE DATABASE
.
Exemples
L’extension .ss
utilisée dans ces exemples est pratique et n’est pas nécessaire. Dans les bases de données contenant plusieurs fichiers, tous les fichiers doivent être spécifiés, conformément à la syntaxe. Les groupes de fichiers ne sont pas spécifiés.
A. Créer un instantané sur la base de données AdventureWorks
Cet exemple montre comment créer un instantané de base de données sur la base de données AdventureWorks
. Le instantané nom, AdventureWorks_dbss_1800
et le nom de fichier de son fichier partiellement alloué, AdventureWorks_data_1800.ss
indiquent l’heure de création de 6 heures (1800 heures).
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. Créer un instantané sur la base de données Sales
Cet exemple crée une base de données instantané, sales_snapshot1200
sur la Sales
base de données, qui est le même exemple de base de données à partir de Créer une base de données contenant des groupes de fichiers dans 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
Contenu associé
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour