[SQL server]automatiser la supprimession des fichier de transaction

automatiser la supprimession des fichier de transaction [SQL server] - SQL/NoSQL - Programmation

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

Reply

Marsh Posté le 17-01-2005 à 12:57:10   

Reply

Marsh Posté le 17-01-2005 à 13:58:13    

La réduction automatique des fichiers ne te suffit pas ?

Reply

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é.

Reply

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

Reply

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.

Reply

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 ...

Reply

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 :D)

Reply

Marsh Posté le 17-01-2005 à 15:41:18    

Qd on cherche, on trouve :D
Plus de détails sur l'option de 'réduction automatique' :

Citation :

AUTO_SHRINK
 
Si cette option possède la valeur ON, les fichiers de base de données peuvent faire l'objet d'un compactage périodique. Les fichiers de données et journaux des transactions peuvent être, les uns comme les autres, compactés automatiquement par SQL Server. Si elle possède la valeur OFF, les fichiers de base de données ne sont pas compactés automatiquement lors des vérifications périodiques de l'espace inutilisé. Par défaut, cette option est activée pour toutes les bases de données avec SQL Server Édition Desktop, et désactivée dans toutes les autres éditions, quel que soit le système d'exploitation.
 
AUTO_SHRINK ne réduit la taille du journal des transactions que si le modèle de récupération SIMPLE est associé à la base de données ou que le journal est sauvegardé.  
 
L'option AUTO_SHRINK provoque le compactage dès qu'un fichier comprend plus de 25 % d'espace inutilisé. Le fichier est compacté pour que 25 % du fichier demeure inutilisé ou à sa taille initiale au moment de sa création, selon celle des deux valeurs qui est la plus grande.
 
Il est impossible de compacter une base de données en lecture seule.
 
L'état de cette option peut être déterminé en examinant la propriété IsAutoShrink de la fonction DATABASEPROPERTYEX.


Reply

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 :D)

WhyMe a écrit :

Qd on cherche, on trouve :D


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
 
Cà marche mais je ne sais pas qd il le fait ...


 
yop
merci, c'est genial.
J'attends avec impatience.

Reply

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 :/)


Message édité par Arjuna le 17-01-2005 à 16:02:01
Reply

Marsh Posté le 17-01-2005 à 16:01:27   

Reply

Marsh Posté le 17-01-2005 à 16:05:56    

Arjuna a écrit :

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 :/)


 
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 ?


Message édité par weed le 17-01-2005 à 16:06:35
Reply

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 :D

Reply

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.  
 
C'est quoi le shrink ? Ton script, comment l'as tu fais ? en procédure stockée ?


-> 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.

Reply

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.


Message édité par Arjuna le 17-01-2005 à 17:06:59
Reply

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'

Reply

Marsh Posté le 17-01-2005 à 18:32:13    

Faut il creer un lot DTS, et utiliser l'icone "Tache de Script ActiveX"

Reply

Marsh Posté le 17-01-2005 à 19:26:26    

Non non, pas besoin de passer pas là :o

Reply

Marsh Posté le 17-01-2005 à 19:26:45    

Bon, c'est con, mon serveurs est toujours en rade :/

Reply

Marsh Posté le 17-01-2005 à 20:17:02    

oki, esperons que ton serveurs fonctionne demain ;)

Reply

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 [:cupra]
(je précise, des fois que ...)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed