J'ai cherché en ligne mais je n'ai pas trouvé ce que je cherchais.
Le problème/la requête est à ma connaissance qu'une base de données dans SQL Server devrait avoir un fichier .mdf et peut-être quelques fichiers .ndf et un fichier .log.
J'ai vu de nombreuses bases de données avec un mdf et plusieurs fichiers ndf. Mais récemment, je suis tombé sur une base de données sur un serveur où chaque base de données avait plusieurs fichiers mdf.
J'ai pris une copie de sauvegarde d'une base de données, je les ai déplacés vers un autre serveur et j'ai restauré le fichier primaire en .mdf et tous les autres fichiers en .ndf, sauf le fichier journal, il a été restauré en .log.
Maintenant mes questions sont:
C'était SQL Server 2008 R2 64bit Enterprise Edition
Tout conseil ou pointeur dans la bonne direction est très apprécié. Je vous remercie.
Mais récemment, je suis tombé sur une base de données sur un serveur où chaque base de données avait plusieurs fichiers mdf.
Cela est dû à une convention de dénomination incorrecte. Microsoft dit que chaque base de données a un fichier de données principal mais cela ne signifie pas qu'elle ne peut avoir qu'un "fichier de données mdf", la base de données peut avoir plusieurs fichiers de données avec .mdf
extension mais un seul sera le fichier de données principal. Il est préférable de donner mdf
extension au fichier de données principal et ndf
au fichier de données secondaire pour avoir une démarcation correcte, mais ce n'est pas une règle stricte et rapide, vous pouvez également donner l'extension .abc au fichier de données primaire donc ce que vous avez vu est normal. En fait, vous pouvez donner n'importe quelle extension que vous souhaitez.
Est-il judicieux d'avoir plusieurs fichiers .mdf pour une base de données?
Si tu veux dire:
Est-il judicieux d'avoir plusieurs fichiers primaires pour une base de données?
La réponse est non, une base de données ne peut avoir qu'un seul fichier de données principal.
Mais si tu veux dire:
Est-il judicieux d'avoir plusieurs fichiers de données (.mdf, .ndf, ou autrement nommé) pour une base de données?
Cela dépend, vous pouvez et ne pouvez pas avoir d'avantage avec plusieurs fichiers de données. S'ils sont répartis sur différents lecteurs physiques (je parle de broches), vous verriez un avantage avec une application intensive en écriture. S'ils sont tous sur les mêmes partitions logiques, cela n'aura aucun avantage car sous-jacents, ils utiliseraient des ressources communes. L'utilisation de fichiers et de groupes de fichiers améliore les performances de la base de données, car elle permet de créer une base de données sur plusieurs disques, plusieurs contrôleurs de disque ou des systèmes RAID (tableau redondant de disques indépendants). Par exemple, si votre ordinateur dispose de quatre disques, vous pouvez créer une base de données composée de trois fichiers de données et d'un fichier journal, avec un fichier sur chaque disque. Lorsque les données sont accessibles, quatre têtes de lecture/écriture peuvent accéder aux données en parallèle en même temps.
Selon cet article MSDN BOL
Les groupes de fichiers utilisent une stratégie de remplissage proportionnel sur tous les fichiers de chaque groupe de fichiers. Lorsque les données sont écrites dans le groupe de fichiers, le moteur de base de données SQL Server écrit une quantité proportionnelle à l'espace libre dans le fichier dans chaque fichier du groupe de fichiers, au lieu d'écrire toutes les données dans le premier fichier jusqu'à ce qu'elles soient complètes. Il écrit ensuite dans le fichier suivant. Par exemple, si le fichier f1 dispose de 100 Mo d'espace libre et le fichier f2 de 200 Mo d'espace libre, une extension est allouée à partir du fichier f1, deux extensions à partir du fichier f2, etc. De cette façon, les deux fichiers deviennent pleins à peu près en même temps et une répartition simple est obtenue.
Un autre avantage que je connais est de considérer une base de données 1 TB si vous souhaitez avoir un seul fichier de données et que vous souhaitez restaurer cette base de données sur un autre serveur, il est hautement improbable que vous en ayez 1 TB d'espace libre. Maintenant, si la même base de données est répartie sur différents fichiers ayant chacun une taille de 250 G, cela devient plus facile à restaurer. Ce n'est peut-être pas vraiment votre scénario, mais cela aide beaucoup son peu facile à trouver un serveur avec quatre disques 250 G plus d'un disque 1 TB
Je dirais qu'au lieu de nombreux fichiers de données, il vaut mieux avoir différents groupes de fichiers, mais là encore, il n'y a pas beaucoup d'environnements. Les bases de données composées de plusieurs groupes de fichiers peuvent être restaurées par étapes par un processus appelé restauration fragmentaire. La restauration par morceaux fonctionne avec tous les modèles de récupération, mais est plus flexible pour les modèles complets et enregistrés en masse que pour le mode simple. Fichiers ou les groupes de fichiers d'une base de données peuvent être sauvegardés et restaurés individuellement. Cela vous permet de restaurer uniquement les fichiers endommagés sans avoir à restaurer le reste de la base de données. Les fichiers d'une sauvegarde de groupe de fichiers peuvent être restaurés individuellement ou en groupe