En tant qu’administrateur de base de données SQL Server (DBA), vous connaissez peut-être les bases de données système telles que Master, Msdb et Tempdb. Cependant, une base de données qui suscite souvent des questions est la base de données Modèle. Elle semble simplement être là, et de nombreux DBA se demandent à quoi elle sert.
La base de données Modèle est essentiellement un modèle pour toutes les nouvelles bases de données créées dans l’instance SQL Server. Lorsqu’une nouvelle base de données est créée, elle hérite des objets (tables, utilisateurs, procédures stockées, fonctions, etc.) de la base de données Modèle. Cela peut être très pratique car cela vous permet de configurer des objets communs que vous souhaitez voir dans chaque nouvelle base de données.
Cependant, il est important de faire preuve de prudence lors de la modification de la base de données Modèle. Tous les objets ajoutés ou modifiés dans la base de données Modèle seront répliqués dans chaque nouvelle base de données créée. Cela signifie que si vous encombrez la base de données Modèle, vous encombrez également la base de données Tempdb, car Tempdb est créée en fonction de la base de données Modèle chaque fois que l’instance SQL Server est redémarrée.
De plus, si la base de données Modèle est corrompue, elle peut empêcher le démarrage de l’instance SQL Server. Dans de tels cas, il existe quelques méthodes pour réparer une base de données Modèle corrompue :
- Si l’instance SQL Server est toujours en cours d’exécution, la méthode la plus simple et la meilleure consiste à restaurer la base de données Modèle à partir d’une sauvegarde, tout comme la restauration d’une base de données utilisateur.
- Si l’instance SQL Server n’est plus en cours d’exécution, vous pouvez utiliser l’option REBUILDDATABASE de la configuration SQL Server pour reconstruire la base de données Modèle. Cependant, ce processus peut être compliqué et doit être abordé avec prudence.
- Une autre approche, bien que non recommandée, consiste à restaurer la base de données Modèle corrompue sur une autre instance SQL Server dans un emplacement alternatif, tel que “Model_fix”. Ensuite, détachez la base de données restaurée et remplacez la version corrompue par la version restaurée.
Il est toujours bon de tester et de vérifier les concepts avant d’en parler. Pour démontrer comment les objets créés dans la base de données Modèle apparaissent dans la base de données Tempdb, j’ai effectué un test simple :
USE Modèle
GO
SELECT * FROM sys.objects
WHERE objectproperty(object_id,'IsMSShipped') = 0
USE Tempdb
GO
SELECT * FROM sys.objects
WHERE objectproperty(object_id,'IsMSShipped') = 0
USE Modèle
GO
CREATE TABLE TableInModel (
Column1 int,
Column2 varchar(30)
)
USE Modèle
GO
SELECT * FROM sys.objects
WHERE objectproperty(object_id,'IsMSShipped') = 0
USE Tempdb
GO
SELECT * FROM sys.objects
WHERE objectproperty(object_id,'IsMSShipped') = 0
Dans ce test, j’ai vérifié les objets dans la base de données Modèle et la base de données Tempdb avant de créer une nouvelle table dans la base de données Modèle. Après le redémarrage de l’instance SQL Server, j’ai à nouveau vérifié les objets dans les deux bases de données. Comme prévu, la table créée dans la base de données Modèle est également apparue dans la base de données Tempdb.
Comprendre le but et la fonctionnalité de la base de données Modèle est crucial pour les DBA. Elle permet de créer des objets de manière cohérente dans de nouvelles bases de données et joue un rôle dans la création de la base de données Tempdb. Cependant, il est important de faire preuve de prudence lors de la modification de la base de données Modèle afin d’éviter d’encombrer la base de données Tempdb ou de causer des problèmes de démarrage potentiels.
Merci de votre lecture ! Si vous avez des questions ou si vous souhaitez en savoir plus sur les concepts de SQL Server, n’hésitez pas à laisser un commentaire ci-dessous.