La semaine dernière, nous avons discuté du concept de marquer un groupe de fichiers en lecture seule dans SQL Server. Cela a suscité des questions intéressantes sur le comportement des sauvegardes et ce qui se passe lors de la restauration d’une base de données avec des groupes de fichiers en lecture seule. Dans cet article de blog, nous explorerons ces questions et éclairerons le comportement des groupes de fichiers en lecture seule dans SQL Server.
Création d’une base de données avec un groupe de fichiers en lecture seule
Commençons par créer une base de données avec un groupe de fichiers en lecture seule. Voici le script T-SQL pour créer la base de données :
CREATE DATABASE [ReadOnlyDB]
CONTAINMENT = NONE ON PRIMARY ( NAME = N'ReadOnlyDB' , FILENAME = N'C:\Temp\ReadOnlyDB.mdf' , SIZE = 4024KB , FILEGROWTH = 1024KB ) , FILEGROUP [ReadOnlyDB_FG] ( NAME = N'ReadOnlyDB_FG' , FILENAME = N'C:\Temp\ReadOnlyDB_FG.ndf' , SIZE = 4096KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'ReadOnlyDB_log' , FILENAME = N'C:\Temp\ReadOnlyDB_log.ldf' , SIZE = 20480KB , FILEGROWTH = 10 %)
GO
-- Marquer le groupe de fichiers en lecture seule
ALTER DATABASE ReadOnlyDB MODIFY FILEGROUP ReadOnlyDB_FG READ_ONLY ;
GO
Dans le script ci-dessus, nous créons une base de données appelée “ReadOnlyDB” avec un groupe de fichiers nommé “ReadOnlyDB_FG”. Nous marquons ensuite le groupe de fichiers en lecture seule à l’aide de l’instruction ALTER DATABASE.
Comportement des sauvegardes et des restaurations
Maintenant, explorons le comportement des sauvegardes et des restaurations lorsqu’il s’agit de groupes de fichiers en lecture seule. Nous commencerons par prendre une sauvegarde complète de la base de données :
BACKUP DATABASE [ReadOnlyDB] TO DISK = N'C:\Temp\ReadOnlyDB.bak' WITH NOFORMAT , INIT , NAME = N'ReadOnlyDB-Full Database Backup' , SKIP , NOREWIND , NOUNLOAD , STATS = 10 , CHECKSUM
GO
Ensuite, nous supprimerons la base de données et la restaurerons à partir de la sauvegarde :
USE MASTER
GO
DROP DATABASE ReadOnlyDB
GO
USE [master]
RESTORE DATABASE [ReadOnlyDB] FROM DISK = N'C:\Temp\ReadOnlyDB.bak' WITH FILE = 1 , NOUNLOAD , STATS = 5
GO
Après avoir restauré la base de données, vérifions les paramètres du groupe de fichiers pour l’attribut en lecture seule :
USE ReadOnlyDB
-- Vérifier l'état
SELECT type_desc , physical_name , is_read_only FROM sys.database_files
GO
En vérifiant les paramètres du groupe de fichiers, nous pouvons voir que notre groupe de fichiers secondaire est toujours marqué en lecture seule. Cette expérience révèle un point d’apprentissage important – lorsque vous sauvegardez une base de données avec des groupes de fichiers en lecture seule, ces paramètres sont conservés. Par conséquent, lors de la restauration de telles sauvegardes, l’attribut en lecture seule est transmis à la base de données restaurée.
Nous espérons que cette expérience vous a fourni des informations précieuses sur le comportement des groupes de fichiers en lecture seule dans SQL Server. Si vous utilisez actuellement ces concepts dans vos environnements, nous aimerions connaître vos expériences. Veuillez partager vos réflexions et vos commentaires ci-dessous.