Partager via


Créer un instantané de base de données (Transact-SQL)

Pour créer un instantané de base de données SQL Server, vous devez impérativement utiliser Transact-SQL. SQL Server Management Studio ne prend pas en charge la création d’instantanés de base de données.

Avant de commencer

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 l’instantané de base de données. Pour plus d’informations sur la prise en charge des captures instantanées de base de données dans SQL Server 2014, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2014.

  • 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 un instantané de base de données dans une base de données miroir, la base de données doit être dans l’état de mise en miroirsynchronisé.

  • La base de données source ne peut pas être configurée en tant que base de données partagée évolutive.

Important

Pour plus d’informations sur d’autres considérations importantes, consultez Instantanés de base de données (SQL Server).

Recommandations

Cette section présente les recommandations suivantes :

Recommandation : Dénomination des instantanés de base de données

Avant de créer des instantanés, il est important de déterminer comment ils seront nommés. 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, considérez une série d’instantanés pour la base de données AdventureWorks2012 . Trois instantanés quotidiens sont créés à des intervalles de 6 heures, entre 6h00 et 18h00, sur la base d'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. Notez que chaque instantané indique l'heure, mais non 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  

Recommandation : Limitation du nombre d'instantanés 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é est conservé jusqu'à ce qu'il soit explicitement supprimé. 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

Si vous souhaitez revenir à un instantané de base de données, vous devez supprimer tous les autres instantanés de cette base de données.

Recommandation : Connexions clientes à un instantané de base de données

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 à un instantané de base de données à l’aide de SQL Server Management 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.

Sécurité

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 .

Comment créer un instantané de base de données (en utilisant Transact-SQL)

Pour créer un instantané de base de données

Remarque

Pour obtenir un exemple de cette procédure, consultez Exemples (Transact-SQL)plus loin dans cette section.

  1. 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).

  2. Exécutez une instruction CREATE DATABASE sur les fichiers en utilisant la clause AS SNAPSHOT OF. 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 nom_capture_instantanée_base_de_données

    ACTIVÉ

    (

    NAME =nom_fichier_logique,

    FILENAME =’nom_fichier_se

    ) [ ,...n ]

    AS SNAPSHOT OF nom_base_de_données_source

    [;]

    Où *source_*database_name est la base de données source, logical_file_name i sle nom logique utilisé dans SQL Server lors du référencement du fichier, os_file_name est le chemin d’accès et le nom de fichier utilisé par le système d’exploitation lorsque vous créez le fichier, et database_snapshot_name est le nom de l’instantané auquel vous souhaitez rétablir la base de données. Pour obtenir une description complète de cette syntaxe, consultez CREATE DATABASE (SQL Server Transact-SQL).

    Remarque

    Lorsque vous créez un instantané de base de données, les fichiers journaux, les fichiers hors connexion, les fichiers de restauration et les anciens fichiers ne sont pas autorisés dans l'instruction CREATE DATABASE.

Exemples (Transact-SQL)

Remarque

L'extension .ss utilisée dans les exemples est arbitraire.

Cette section contient les exemples suivants :

A. Création d'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 nom de l'instantané, AdventureWorks_dbss_1800, et le nom de son fichier partiellement alloué, AdventureWorks_data_1800.ss, précisent l'heure de création, 6H00 du soir (18 heures).

CREATE DATABASE AdventureWorks_dbss1800 ON  
( NAME = AdventureWorks_Data, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )  
AS SNAPSHOT OF AdventureWorks;  
GO  

B. Création d'un instantané sur la base de données Sales (Ventes)

Cet exemple montre comment créer un instantané de base de données, sales_snapshot1200, sur la base de données Sales . Cette base de données a été créée dans l’exemple illustrant la création d’une base de données dotée de groupes de fichiers dans la rubrique CREATE DATABASE (SQL Server Transact-SQL).

--Creating sales_snapshot1200 as snapshot of the  
--Sales database:  
CREATE DATABASE sales_snapshot1200 ON  
( NAME = SPri1_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),  
( NAME = SPri2_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),  
( NAME = SGrp1Fi1_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),  
( NAME = SGrp1Fi2_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),  
( NAME = SGrp2Fi1_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),  
( NAME = SGrp2Fi2_dat, FILENAME =   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')  
AS SNAPSHOT OF Sales;  
GO  

Tâches associées

Voir aussi

CREATE DATABASE (SQL Server Transact-SQL)
Instantanés de base de données (SQL Server)