|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2008 Messages : 202 ![]() |
Bonjour,
J'ai un programme qui injecte des gros volumes de données dans une base SQL SERVER. Parfois (c'est assez rare), le programme plante et j'obtiens ceci dans l'observateur d'évènements: La croissance automatique du fichier 'xxxxx_log' dans la base de données 'xxxxx' a été annulée par l'utilisateur ou a expiré au bout de 18393*millisecondes. Utilisez ALTER DATABASE pour définir une valeur FILEGROWTH moins élevée pour ce fichier ou pour définir explicitement une nouvelle taille de fichier. Je sais effectivement qu'il y a un mécanisme de croissante automatique des fichiers de base de données et que l'on peut paramétrer ça via sql management studio mais je trouve que ça craint car un admin ne peut pas toujours savoir à l'avance que la base va grossir (plus ou moins vite). Que faire pour que SQL Server se débrouille tout seul dans tous les cas ? Merci |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Bonjour,
Je pense que l'incrément que vous avez défini pour ce fichier est plus gros que l'espace disque libre dont vous disposez sur le disque qui supporte le fichier du journal des transactions de votre base de données. Vous pouvez donc déplacer votre base de données par détachement puis rattachement, en plaçant le fichier du journal des transactions sur un disque ayant un plus gros espace libre disponible. En outre la croissance d'une fichier de base de données est assez long, donc cela doit considérablement ralentir votre requête. De plus à chaque croissance de votre fichier, il se peut que celui-ci se fragmente, ce qui est également contre-performant Pour essayer de prédire la taille que doit avoir votre fichier, essayez de voir quelle taille il fait avant d'insérer des données dans le cas où vous n'obtenez pas cette erreur. Faites ensuite le ratio entre la taille des données que vous avez insérées et la différence entre la nouvelle et l'ancienne taille de votre fichier du journal des transactions. Pour le jeu de données qui vous cause l'erreur, retaillez en conséquence le fichier, en prenant une marge de 30%. Pour connaître la taille de votre fichier du journal des transactions, vous pouvez utiliser DBCC SQLPERF(logspace) ou bien la première requête du billet que j'ai publié ici @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
20
|
Copyright © 2000-2012 - www.developpez.com