automatiser la supprimession des fichier de transaction [SQL server] - SQL/NoSQL - Programmation
Marsh Posté le 17-01-2005 à 14:35:50
Si mais comment fais tu alors ?
tu veux parler de clique droit sur la base de donnée -> propriété -> Onglet Journal des transactions -> Limiter la croissance du fichier (Mo).
Je l'ai limité mais cela a fait planter la base de donnée et donc je me suis mis en illimité.
Marsh Posté le 17-01-2005 à 14:39:11
sql server .. doit y avoir un service associé derriere non ?
si oui, dans .bat: net stop service, del des fichier, net start service
Marsh Posté le 17-01-2005 à 15:00:14
oui c'est ce que je pensais mais mon superieur m'a dit que c'etait un peu trop bourrin et qu'au mot du redémarrage du service ms_sql celui me dira qu'il n'arrive pas à trouver le fichier.
Marsh Posté le 17-01-2005 à 15:08:58
Propriétés de la base > onglet options > réduire automatiquement
Cà marche mais je ne sais pas qd il le fait ...
Marsh Posté le 17-01-2005 à 15:30:12
Dès que mon serveur est re-up, je regarde le script que j'ai foutu dessus (si j'y ai accès, je sais plus si je suis encore admin de la base )
Marsh Posté le 17-01-2005 à 15:41:18
Qd on cherche, on trouve
Plus de détails sur l'option de 'réduction automatique' :
Citation : AUTO_SHRINK |
Marsh Posté le 17-01-2005 à 15:49:02
Arjuna a écrit : Dès que mon serveur est re-up, je regarde le script que j'ai foutu dessus (si j'y ai accès, je sais plus si je suis encore admin de la base ) |
WhyMe a écrit : Qd on cherche, on trouve |
merci. Je vais l'activer mais cela ne va pas suffire en effet. C'est pas mal du tout pour les fichiers de base de données mais pour les fichiers journaux de transaction, cela ne suffit pas. Les fichiers de transactions grossisent très tres rapidemment et donc une compression n'est pas suffisant.
WhyMe a écrit : Propriétés de la base > onglet options > réduire automatiquement |
yop
merci, c'est genial.
J'attends avec impatience.
Marsh Posté le 17-01-2005 à 16:01:27
Bah. Moi c'est pas une compression que je fais hein !
C'est un shrink (bourinnage dans le fichier pour le vider comme un goret), mais disons qu'il est fait proprement dans mon script de maintenance, avec backup et tout le bordel avant (parceque c'est bien de vider le fichier des transactions, mais bon, si y'a une coupure de courant avant le prochain backup et qu'il y a des erreurs d'écriture sur le disque, t'as l'air fin )
Marsh Posté le 17-01-2005 à 16:05:56
Arjuna a écrit : Bah. Moi c'est pas une compression que je fais hein ! |
bahh normallement il y a des sauvegardes tous les jours donc je peux sans problèmes effacer ou vider les fichiers toutes les 2-3 jours sans problème.
C'est quoi le shrink ? Ton script, comment l'as tu fais ? en procédure stockée ?
Marsh Posté le 17-01-2005 à 16:15:18
C'est pas une compression non plus la 'réduction automatique', c'est bien un shrink
Attention, pas Shrek hein
Marsh Posté le 17-01-2005 à 17:05:56
weed a écrit : bahh normallement il y a des sauvegardes tous les jours donc je peux sans problèmes effacer ou vider les fichiers toutes les 2-3 jours sans problème. |
-> Ben, oui et non; Si tu shrink juste après un backup, y'a pas de souci. Mais si tu shrink n'importe quand, entre le dernier backup et le moment où tu shrink, en cas de plantage du serveur, tu pers toutes ces données. L'intérêt du log des transactions (outre bouffer 200 Go en 3 jours) c'est d'être capable de rejouer à la milliseconde près tout ce qui a été fait dans la base entre le moment du dernier backup et le moment où le serveur s'est arrêté.
Où la récupération après plantage, ce type de fichier est aussi grandement utilisé par les DBA pour retrouver un état stable de la base de données après une "méga connerie" d'un utilisateur, style : tiens, et si je fais un "delete societe cascade constraint" ça fait quoi ?
Les DBA peuvent restaurer le dernier backup qui date de la veille au soir, puis rejouer le fichier des transactions depuis ce moment jusqu'à la ligne en question : ça éviter à tout le monde de resaisir tout ce qu'ils ont fait la matinée.
Marsh Posté le 17-01-2005 à 17:06:39
Sinon, j'ai créé un job (dans le truc "agent" ) et je lance un lot d'instructions T-SQL. Il me semble que j'ai noyé ça dans la masse de mon plan de maintenance, juste après le backup du fichier des transactions.
Marsh Posté le 17-01-2005 à 18:24:11
Voilou j'ai la syntaxe de toutes les fonctions qui me sont necessaire, mais comment les utiliser ?
Poour détacher la base de donnée :
EXEC sp_detach 'nom_base_de_donnée', 'true'
Pour effacer le fichier en VbScript:
Set objFSO = CreateObject("Scripting.FileSystemObject" )
objFSO.DeleteFile("C:\FSO\toto.ldf" )
Pour détacher
EXEC sp_detach_db 'nom_base_de_donnée' 'path_fichier_base_de_donnée' 'patch_fichier_de_transaction'
Marsh Posté le 17-01-2005 à 18:32:13
Faut il creer un lot DTS, et utiliser l'icone "Tache de Script ActiveX"
Marsh Posté le 18-01-2005 à 00:48:23
backup log <nom de la base> with no_log
puis un compactage, et ca roule
a ne pas faire en prod hein
(je précise, des fois que ...)
Marsh Posté le 17-01-2005 à 12:57:10
mes fichiers de transactions .ldf grossissent très rapidement.
Pour supprimer il faut dans un premier temps, démonter la base de donnée et cela on peut supprimer le fichier dans l'explorer. Il faut remonter la base de donnée pour qu'elles puissent être exploitable.
J'aimerais donc automatiser ces 3 taches (démonter, effacer, remonter).
Je me suis renseigné, on m'a dit que l'on pouvait le faire au moyen de la procédure stocké système (base de donnée master) sp_detach_db.
J'ai égallement vu sur 1 bouquin que l'on pouvait lancé une procédure à partir d'un script VB, C, mais je n'ai pas eu plus de détail.
Comment s'y prendre pour lancer une procédure stocké à partir d'un script C (ou VB)?
pour exécuter une procédure il faut utiliser la commande exec ou execute :
exec sp_detach_db 'ma_base_de_donnée'
mais à part ca, je ne vois toujours pas comment faire avec du C ou du VB pour supprimer le fichier.
Comment faire ?
il semble que je ne sois pas le seul à avoir ce problème.
http://groups.google.com/groups?q= [...] com&rnum=2