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 : **

    Conditions préalables

    Sécurité

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

  • Pour créer un instantané de base de données, en utilisant : Transact-SQL

Avant de commencer

Conditions préalables

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 du 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 instantanés de base de données dans SQL Server 2012, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2012

  • 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 un état de mise en miroir synchronisée.

  • 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

  • Recommandation : Limitation du nombre d'instantanés de base de données

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

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 :

  • Le 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 AdventureWorks2012 . Trois instantanés quotidiens sont créés à des intervalles de 6 heures, entre 6h00 et 18h00. 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.

[Haut de la page]

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.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

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 de base est la suivante :

    CREATE DATABASE database_snapshot_name

        ON

        (

            NAME = logical_file_name,

            FILENAME = 'os_file_name'

        ) [ ,...n ]

        AS SNAPSHOT OF source_database_name

    [;]

    Où source_database_name est la base de données source, logical_file_name i le nom logique utilisé dans SQL Server pour référencer le fichier, os_file_name le chemin d'accès et le nom de fichier utilisés par le système d'exploitation lorsque vous créez le fichier, et database_snapshot_name le nom de l'instantané auquel vous souhaitez restaurer la base de données. Pour obtenir une description complète de cette syntaxe, consultez CREATE DATABASE (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.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

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

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

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\MSSQL11.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 (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\MSSQL11.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales
GO

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Tâches associées

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Voir aussi

Référence

CREATE DATABASE (Transact-SQL)

Concepts

Instantanés de base de données (SQL Server)