«Nettoyer» un fichier de base de données SQL Server créé avec l'initialisation instantanée des fichiers activée?


8

L'initialisation instantanée des fichiers est activée sur notre serveur SQL, de sorte que la partie «vide» du fichier de base de données n'est pas mise à zéro avant d'être allouée. Je crois comprendre que cela signifie que le fichier pourrait contenir des données «supprimées».

Alors maintenant, je veux envoyer une copie d'une base de données (probablement un fichier de sauvegarde) à l'extérieur de l'entreprise. Mais il y a toutes ces données "supprimées" potentiellement sensibles qui se trouvent à l'intérieur du fichier. Maintenant, je voudrais mettre à zéro la partie inutilisée du fichier.

Est-ce possible? J'imagine que je pourrais créer une nouvelle base de données et tout copier, ou peut-être restaurer une copie de la base de données sur un autre serveur sans l'initialisation instantanée des fichiers activée, puis être agressif avec une commande ShrinkFile pour supprimer la plupart ou la totalité de la partie inutilisée du fichier de base de données , mais existe-t-il une méthode moins manuelle et plus longue? Idéalement, une commande pour indiquer à SQL de mettre le fichier à zéro comme il l'aurait fait si l'initialisation instantanée du fichier n'avait pas été activée.


Pour référence générale, l'initialisation instantanée du fichier de données peut être temporairement désactivée sans déranger les autorisations du compte de service en utilisant l'indicateur de trace 1806 comme Paul Randal l'a écrit ici .
Jon Seigel

Réponses:


5

Une SAUVEGARDE SQL Server sauvegarde uniquement les extensions utilisées pour conserver les données. Les extensions inutilisées sont laissées par la sauvegarde. Lorsqu'une page est utilisée pour des données, elle sera formatée pour être utilisée selon les besoins, afin que cette page soit exempte d'anciennes données.

Par conséquent, tout ce que vous devez faire est de sauvegarder la base de données et de la restaurer ailleurs. Les fichiers restaurés seront de la même taille que la base de données d'origine, mais les extensions inutilisées seront créées à l'aide des capacités du serveur cible. Cela peut être initialisé complètement ou instantanément à l'aide des blocs de disque sur le serveur cible.

Cependant, étant donné que les extensions sont le niveau auquel les sauvegardes se produisent, les pages inutilisées dans l'étendue peuvent encore exposer certaines données lorsqu'elles sont restaurées sur un autre serveur. Pas autant que cela pourrait être exposé sur le serveur source, car les extensions inutilisées ne sont pas restaurées.


1
Étendues inutilisées en fait. Théoriquement, même certaines des extensions utilisées peuvent toujours contenir de l'espace avec des `` anciennes données '', ce qui est un dribble sans signification pour SQLServer mais pourrait être un trésor pour un concurrent armé d'un éditeur hexadécimal et beaucoup de temps libre. Si vos données sont aussi sensibles, ne mettriez-vous pas à zéro tous les fichiers de toute façon?
John Alan

@JohnAlan - Modifié pour reconnaître l'exposition dans une certaine mesure.
RLF

Les données ne sont pas exactement des données du GCHQ - ce ne sont que des données client de base et autres, il est donc peu probable que quiconque fasse trop d'efforts pour les récupérer. Je n'avais pas réalisé que les sauvegardes fonctionnaient comme ça, bien qu'il soit logique que ce soit le cas. S'il n'y a pas d'autre solution rapide et simple, ce sera probablement le cas.
paulH

1

Avez-vous envisagé d'en restaurer une copie, d'activer TDE qui le forcera à 0, puis de désactiver à nouveau TDE? Je n'ai pas testé cela mais je pense que cela fonctionnera, nous devrons cependant le tester.

Autre chose aussi, avez-vous envisagé d'en restaurer une copie avec IFI désactivé, de créer un nouveau groupe de fichiers avec de nouveaux fichiers, de le présélectionner, de reconstruire le cluster et d'autres index sur le nouveau groupe de fichiers, puis de supprimer le groupe de fichiers existant (s'il s'agit du groupe de fichiers principal vous devrez le réduire car vous ne pouvez pas supprimer le primaire)


L'utilisation de TDE semble être une approche intéressante, bien que je ne sois pas sûr qu'elle supprimera plus de données indésirables que la méthode de sauvegarde et de restauration. Si quelqu'un sait plus d'informations à ce sujet, je serais intéressé de le savoir.
paulH
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.