Quelle est la différence entre Shrink Database et File?

33
DBCC ShrinkDatabase()
DBCC ShrinkFile()
  1. Dois-je exécuter les deux commandes DBCC afin de réduire la base de données?
  2. Quelle est la différence entre ces deux ci-dessus?
Paul White dit GoFundMonica
la source

Réponses:

36

Simplement...

  • DBCC ShrinkDatabase(): réduire tous les fichiers
  • DBCC ShrinkFile(): juste un fichier

Par exemple, vous pouvez avoir un problème de sauvegarde du journal et il est devenu incontrôlable, alors vous le lancez DBCC ShrinkFile().

Vous avez presque utilisez jamais ShrinkDatabase.

Avant d’envisager l’utilisation de cette commande, veuillez lire le blog de Paul Randal sur la réduction .

Je ne voudrais réduire aucun des fichiers (mdf, ldf) à moins d'une raison claire. Les fichiers ont la taille voulue car ils doivent l'être. Les blogs suggérant de le faire dans le cadre d'une maintenance régulière ne comprennent probablement pas le fonctionnement de SQL Server.

gbn
la source
2
Merci mec. vous avez raison. Je viens de lire le blog de Brent Ozar… il jure littéralement dans son blog "Arrêtez de réduire vos fichiers de base de données. Sérieusement. Maintenant.".
Et quand il fait la même chose, pourquoi y a-t-il des arguments différents?
Stefan Steinegger
2

Une base de données par défaut a deux fichiers

MyDb.MDF et MyDb.LDF

Le fichier MDF est le fichier de données où réside la partition principale. Selon vos besoins, vous pouvez partitionner une base de données en plusieurs fichiers. Ceci est fait pour que les données (une ou plusieurs tables) puissent s'étendre sur plusieurs fichiers qui sont généralement placés sur des disques durs distincts pour atteindre une performance supérieure.

Si vous réduisez une base de données, tous les fichiers associés à cette base de données seront réduits.

Si vous réduisez un fichier, seul le fichier choisi sera réduit.

Vous devez uniquement utiliser la commande Réduire la base de données. Mais ce n’est généralement pas une bonne pratique et ce n’est pas non plus une pratique recommandée.

Si vous nous dites quel est le problème que vous rencontrez, nous pourrons vous donner plus d’informations sur la façon de le résoudre.

Raj Plus
la source
Oh..issue est notre serveur de production qui manque d’espace disque. Ajouter plus de disque est idéal, mais je me demandais quoi faire d'autre?
0

Très probablement, nous utilisons uniquement dbcc shrinkfile. sp_helpdb 'nom de la base de données' fournit la liste des fichiers de données et journaux d'une base de données.

Faites un clic droit sur le studio de gestion, tâches-> réduire-> le fichier indique le pourcentage que vous pouvez réduire.

quoi que nous réduisions, il est disponible sur le disque en tant qu’espace libre.

par exemple: utilisez 'databasename' dbcc shrinkfile (fileid, 100)

ici 100 est 100 MB

fileid peut être obtenu à partir de sp_helpdb 'databasename'


la source