Base de données et de restauration peut remplir de la base de données MSDB

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

152354
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Symptômes
Tâches SQL Executive échouent et le message d'erreur suivant est renvoyé :
Erreur : 1105, gravité : 17, état 2
Impossible d'allouer l'espace pour l'objet ' %. * s 'dans la base de données' %. * s ', car le
' %. * s ' segment est plein. Si vous a manqué d'espace dans Syslogs, videz le
journal des transactions. Sinon, utilisez ALTER DATABASE ou sp_extendsegment pour
augmenter la taille du segment.
Les tâches basées sur SQL Executive qui peuvent échouer sont les suivantes :
  1. Dumps planifiées et les restaurations.
  2. Tâches définies pour la réplication.
  3. Alertes.
  4. Tâches planifiées du Web.
Cause
La base de données MSDB est plein.
Contournement
Dans SQL Server 6.5, les tableaux suivants ont été ajoutées à la base de données MSDB pour faciliter la maintenance des informations de sauvegarde :

sysbackupdetail : Spécifie un résumé des périphériques utilisés pour la sauvegarde (vidage).
sysbackuphistory : Spécifie un résumé de chaque opération de sauvegarde (vidage).
sysrestoredetail : Spécifie un résumé des périphériques utilisée pour restaurer (load).
sysrestorehistory : Spécifie un résumé de chaque opération de restauration (load).

SQL Server gère automatiquement un historique complet en ligne sauvegarde et de restauration dans la base de données MSDB. Ces informations comprennent notamment qui a effectué la sauvegarde lorsqu'elle a été effectuée et les périphériques ou fichiers il est stocké sur.

L'administrateur système doit surveiller ces tables à supprimer les anciennes entrées dans ces tables pour vous assurer que la base de données MSDB ne remplit pas.

La procédure stockée suivante peut être utilisée pour supprimer des entrées de ces tables système dans la base de données MSDB.
use mastergosp_configure 'allow', 1goreconfigure with overridegodrop proc sp_cleanbackupRestore_log   go   create proc sp_cleanbackupRestore_log   @DeleteBeforeDate datetime   as   begin      Delete from msdb.dbo.sysbackupdetail where backup_id         in (Select backup_id from msdb.dbo.sysbackuphistory where backup_start <=   @DeleteBeforeDate)      Delete from msdb.dbo.sysbackuphistory where backup_start  <=   @DeleteBeforeDate      Delete from msdb.dbo.sysrestoredetail where restore_id         in (Select restore_id from msdb.dbo.sysrestorehistory where backup_start <=   @DeleteBeforeDate)      Delete from msdb.dbo.sysrestorehistory where backup_start <=   @DeleteBeforeDate   endgosp_configure 'allow', 0goreconfigure with override				
Vous devrez peut-être ensuite exécuter la procédure stockée nouvellement créée. Par exemple, si vous souhaitez supprimer toutes les entrées dans les tables répertoriées dans la procédure stockée qui s'est produite avant le 2 janvier 1997, vous exécuterez les éléments suivants :
exec sp_cleanbackupRestore_log  '1/2/97'				
si vous souhaitez automatiser le code, vous pouvez utiliser quelque chose de similaire au suivant :
declare @DeleteBeforeDate datetime-- Modify the second parameter as necessary.-- It is currently set to delete anything older than 60 days.select  @DeleteBeforeDate = DATEADD(day, -60, getdate())select  @DeleteBeforeDate   exec sp_cleanbackupRestore_log  @DeleteBeforeDate				
Remarque : si vous recevez un 1105 pour objet 'syslogs', consultez l'article suivant dans la base de connaissances Microsoft : 110139 - INF: Causes of SQL Transaction Log Filling Up.

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 152354 - Dernière mise à jour : 02/09/2014 08:17:47 - Révision : 4.0

  • Microsoft SQL Server 6.5 Édition Standard
  • kbnosurvey kbarchive kbmt kbprb KB152354 KbMtfr
Commentaires